第五章 Jsp简介

          Jsp概念:

            1:什么是Jsp

             Jsp(Java Server Page)是一种Java服务器端技术。一个Jsp页面包括三个方面的内容

             Html,JavaScript,Jsp程序片断

           2:如何写Jsp脚本

               把Jsp脚本写在<%      %>里面

                把Js脚本写在<script>代码</script>里面

            3:可见Jsp实际上就是在Html语言中嵌入Jsp脚本

                  4:编写第一个Jsp应用程序

           Jsp的执行过程:

            浏览器--->请求-------->Web服务器---->找到Jsp页面---->编译

                                                                  |

                                                                  |

                                  浏览器<-------响应<------Serverlet     

            从该执行过程不难看出Jsp在最后实际上要变成Serverlet之后才能发给客户端


           Jsp与Servelet的区别:

            1)Jsp是在Serverlet的基础上发展起来的

            2)Serverlet一般用于处理没有界面的业务逻辑,如果处理有界面的程序,就显示比较笨拙

              Serverlet用out.println一句一句的输出Html标记(界面),当整个网页非常多且复杂的时候

              就会有很多的out.println来输出html标记

            3)Jsp很好的解决了这个问题,对于Html标记可以直接书写,只有需要写程序代码时才以

              <%     %>的方式加入

            4)Jsp把界面部分与代码部分分离,这样可以在开发网站时实现分工。美工只管界面部分,而

              程序员只管代码部分

                                                         

            Jsp的语法:

              A)Jsp的输出:out.println用来输出

                 1)输出字符串:out.println("字符串")

                 2)输出Java脚本:out.println("<script>alert('我是真的爱你');</script>");

                 3)输出Html标记:out.println("<a href=http://www.sina.com>新浪网</a>");

                    链接到QQ对话

ut.println("<a target=blank href=http://wpa.qq.com/msgrd?v=1&uin=16663755&site=walmart&menu=yes>留言</a>");
              B)表达式。<%=Java表达式%>。表达式后面不要加分号
                  例如:<%=Math.max(100,90)%>,<%=3+4*5%>等
              C)Scriptlet:
                 Scriptlet就是在<%.....%>里面嵌入Java代码。它在形式上与表达式的区别就是在
                 <%...%>里面没有"=",而且中间是一段Java代码,不是表达式,每条语句要以分号
                 结尾。举例说明
              D)声明:<% ! Java变量,方法 %>
                 1):声明变量:  <%! int a=3,b=4 %> 
                                
                 2)声明类:
                        <%!
     public class stud
      {
             public String GetId()
           {
                                                    return "W1";
                                                  }
                                  }
                         %>     
                 3)声明函数:                         
                     <%!
     public  int sum(int a,int b)
     {
             return a+b;
                         }
                     %>
              说明:
               1)声明变量即可以在<%!     %>只能够声明,不能实现
                 比如:<%! int a=3,b=4,c; c=a+b;%>错误<%! int a=3,b=4,int c=a+b;%>正确
               2)声明变量既可以<%! %>中声明,也可以在<%中声明%>。
                  <%! %>中声明的变量:servlet(Jsp最终要转换成Serverlet)的实例变量。
                  根据Servlet的原理,所以的客户端只共享一个Serlvet的实例,所以在此处定义的
                  变量可以其它的页面来共享,也就是具备有继承性
                  <%   %>中声明的变量:是局部变量,只能够给本页面使用,不具备继承性
                          <%!
       int i=0; //实例变量,有继承性
    %>
    <%
                   i++;
                              out.println(i);
                          %>
                          与的区别
                            <%
                              int i=0; //局部变量,无继承性
                   i++;
                              out.println(i);
                          %>
               3)但是声明函数与类只能够在<%! %>中声明,而不能在<%  %>
               4)一般声明变量都在<% %>中声明,而声明函数与类都在<%!中声明%>
               5)为了代码的可读性一般都把类用一个单独的Java文件来保存,而不会在一个
                  Jsp页面中去定义 

          E)Jsp指令:
              1)Jsp指令控制对整个页面的处理。
              2)Page指令:
                  1:导入Java包,与自定义的类
                    格式:<%@ page import="aspproject.Student,java.util.*"%>
                     说明:自定义的类一定要放在WEB-INF下面的classes下面,不过只要引用了一个类,
                           Jbulider会自动的创建一个classes文件夹,并放入相应的类
                  2:当本页面发生错误时,跳转到错误页面进行处理                    
                     格式:
                          源页面:< 
%@page 
 errorPage="Error.jsp" isErrorPage="false" %>
                          错误页面:<%@ page isErrorPage="true" %> 
                     说明:错误是当出现异常,但是没有捕获时,如果捕获了,则不会发生页面跳转
              3)include指令:
                1:该指令用于把一个Jsp页面包含到另外一个Jsp页面中
                2:格式:<%@ include file="HeadPic.jsp" %>
                  说明:嵌入一个页面是为了重用这个页面,而不必在每一个页面上写一些相同的代码。
                        例如:在很多的Jsp页面中都要在顶部显示同样的图片,这时就不必在每个页面
                        都去包含这些图片,而是单独写一个文件来完成此任务,然后在其它的Jsp页面中
                        利用include包含即可
                     

             作业:
                 1)编写一个Java类,用来描述学生。包含学生的学号,姓名,性别。声明三个实例,并加到
                   一个ArraryList,并把结果显示在表格中
                 2)编写一个页面,让用户输入两个数和一个操作符,在另外一个页面显示计算的结果
   3)做一个民意调查页面,来调查"在校大学生谈恋爱",好,不好,不好说三个选项
                   一个页面:显示界面用来让用户进行投票,另外一个页面显示投票的结果
    jtds连接Sql server
                 4)使用Jsp实现用户登录
                  //**************************************************************************                        
     Class.forName("net.sourceforge.jtds.jdbc.Driver");
         Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://chen:1433;DatabaseName=jsp", "sa", "");
          java.sql.PreparedStatement ps = conn.prepareStatement(Sql);
          java.sql.ResultSet rs = ps.executeQuery();
                 //******************************************************************************