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>
与jsp:forward用法类似
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. request,session,application 这三个对象的范围是逐个增加的,request在一个请求的范围内,session是在浏览器窗口的范围内,application则是在整个服务器的运行过程中。
请求转发和重定向
1. A) HttpServletResponse`对象的sendRedirect(Stringlocation)方法称为重定向,如果location地址前加“/”,则表示相对于Servlet容器的根来请求,即http://localhost:8080. 如果location地址前没有加上“/”,则表示相对于当前请求的URL来寻址。
B) RequestDispatcher 的forward(request,response)方法称为请求转发
2. 请求转发与重定向的区别
A)请求转发整个过程,整个过程处于同一个请求。
B)重定向:实际上客户端会向服务器端发送两个请求。
C)requestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,属于请求对象的方法
D)sendredirect() 是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

被折叠的 条评论
为什么被折叠?



