Java web(2012/2/18)

 

1、JSP执行过程

2、JSP最终都会转换为Servlet去执行

3、JSP语法

       1)注释:

              ①<!-- HTML注释-->    HTML注释,会发送给客户端   //在页面看不到,但页面的源代码可以看到

              ②<%--JSP注释--%>     JSP注释,不会发送给客户端(隐藏注释)  //在页面看不到,页面的源代码也看不到

              ③<!--<%=new java.util.Date()%>--> HTML注释中嵌套JSP表达式,会把表达式内容计算出来再发送给客户端

        2)编译器指令:<%@                   %>        两个主要指令page与include

             ① page:页指令,<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

                  a)language="java",声明脚本语言的种类,目前只能用"java"

                  b)import="java.util",需要导入的Java包的列表,其中java.lang.* ,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*这些包在JSP编译时就已经导入了,就不需要再导入了

                  c)无论把<%@      %>指令放在JSP文件的哪个地方,它的作用范围都是整个JSP页面。         

              ②include:包含指令,表示当前页面可以包含其他页面

              ③taglib指令,用于引入自定义标签库

        3)声明:<%! int i = 3; %>  表示为成员变量  ,脚本段:<% int j = 3; %>  表示为局部变量

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

        4)表达式:<%= expression %>

        5)脚本段:<%    

                                       //任何合法的Java代码

                               %>

        6)<jsp:forward   page="需要转向页面的地址">              </jsp:forward> 

            该指令用于转向页面,在该指令后面的所有代码都没有机会执行了,因为页面的流程已经转向了另外一个页面。

        7)<jsp:include page="被包含页面的地址">            </jsp:include>

4、JSP内置对象

5、getParameter方法是getParameterValues方法的特列,表示请求参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。在多选框的情况下需要使用getParameterValues方法来获取用户多选的多个复选框的值。

6、request和response

7、Session用来保存客户端状态信息

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

9、request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务端之间的交互,服务端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。没有与getParameter方法相对应的setParameter方法。

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

11、暂时这么理解:session对象的存活范围,只要浏览器不关闭,session对象就会一直存在,因此在同一个浏览器窗口中,无论向服务端发送多少个请求,session对象只有一个。

12、application对象的存活范围,只要服务器没有关闭,application对象的数据就一直存在,并且application对象只有一个。

13、HttpServletResponse对象的sendRedirect(String location)方法称作重定向。如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,即http://localhost:8080,如果location地址前面没有加上“/”,则表示相对于当前请求的URI来寻找地址。

14、RequestDispatch的forward方法(request,response)方法称作请求转发

15、请求转发和重定向区别:

        1)请求转发,整个过程处于同一个请求当中

        2)重定向,实际上客户端会向服务端发送两个请求。

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

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

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值