web学习之jsp一

来源:互联网 发布:中介者模式 java 编辑:程序博客网 时间:2024/06/11 22:59

JSP(java Servlet page)

1.    jsp的执行顺序(jsp最终执行的还是转换的servlet程序)

               A. 查找jsp-à

               B. 如果是第一次执行或修改,就会生成.java(servlet),然后由JSDK编译成. class

                                    (路径:tomcat/work / catalina /localhost/ test/ org/ apache /jsp

                                       如果不是第一次修改或没有修改,会跳过这一步

                C. 执行相对应的.class字节码

2. jsp中嵌套的 java放在<%     %> 称为jsp元素(java脚本)

3. 注释;  html注释:<!--         -->

            但是<!-- <%= new java.util.Date() %> --> java代码中执行         

           隐藏注释(jsp注释):<%--        --%>

           编译器指令     包含在  <%@  % >
                        <%@page language=”java” import=”java.util.*”     %>

           包含指令 <%@  include  file=” ”  %>

         声明: <%! int a=3; %>

          脚本段的 <% int b =3; %>

                      当服务器将jsp转换为servlet时,会将JSP中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量  Servlet是单实例的,这样成员变量的值就只有一个,每个用户在访问到它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。

4.   包含指令  <%@ include  file=”  ” %>   用于在客户端指定位置显示相同的jsp执行结果。

5.     <jsp:forward page=”forwardTo.jsp”>

                    <jsp:param name=”username” value=”lisa”>
                    </jsp:forward>

     跳转到指定的页面,并传递参数,后面的内容不再执行。如果查看对应的java代码的话,就会发现跳转之后就是一个return,后面再没有内容。

6.  <jsp:include page=”included.jsp”>

              <jsp:param:name=”user” value=”user”>

              </jsp:include>

    与jspforward用法类似

7. 九个JSP的内置对象(常用的就三四个)
             request 请求对象     HttpServletRequest接口)

             response 服务器的响应对象    HttpServletResponse接口

             pageContext

             session   会话对象     (HttpSession)

           application   应用程序对象  (ServletContext)

            out 

            config

            page

            exception

 

Request,Session,application

1.     Request对象getParameter()  getParameterValues()   getParameterName()

         getAttribute()  setAttribute()

                     getParameter()是获取到客户端通过表单或Url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParmeter()来获取,没有与之相对应的setParameter()

                    而getAttribute() setAttribute()是成对出现,首先通过setAttribute()设置属性与属性值,然后通过getAttribute()根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象),这两个都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。

          request对象内数据的存活范围就是request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求就会被销毁了,之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。

          session对象内数据的存活范围也就是session对象的存活范围(只要浏览器不关闭,session对象就会一直存在??这句话是错误的。每一个浏览器启动时产生session对应一个sessionID)因此在同一个浏览器窗口中。无论向服务器端发送多少个请求,session对象只有一个

           application(应用对象),存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器运行过程当中,application对象只有一个。

2.     requestsession,application这三个对象的范围是逐个增加的,request在一个请求的范围内,session是在浏览器窗口的范围内,application则是在整个服务器的运行过程中。

 

请求转发和重定向

1.   A   HttpServletResponse`对象的sendRedirect(Stringlocation)方法称为重定向,如果location地址前加“/”,则表示相对于Servlet容器的根来请求,即http://localhost:8080.  如果location地址前没有加上“/”,则表示相对于当前请求的URL来寻址。

       B)  RequestDispatcherforward(request,response)方法称为请求转发

2. 请求转发与重定向的区别

       A)请求转发整个过程,整个过程处于同一个请求

       B)重定向:实际上客户端会向服务器端发送两个请求

       CrequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,属于请求对象的方法

       D)sendredirect() HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

0 0