forward>指令用于转向页面,在该指令后面的所有代码都没有机会执行了,因为页面的流程已经转向了另外一个页面了。
5.
getParameter方法是getParameterValues方法的特例,表示请求参
数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。
在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。
JavaWebLesson4
1.request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。
setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。
JavaWebLesson4
1.request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。
setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。
2.request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。
没有与getParameter方法对应的setParameter方法。
3.request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。
4.session对象内数据的存活范围也就是session对象的存活范围(?
只要浏览器不关闭,session对象就会一直存在?
),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。
5.
application(应用对象):
存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。
在整个服务器运行过程当中,application对象只有一个。
6.request、session以及application这3个对象的范围是逐个增加的:
request只在一个请求的范围内;?
session是在浏览器窗口的范围内?
;application则是在整个服务器的运行过程中。
5.JAVAweb5
1.RequestDispatcher对象通过HttpServletRequest的对象的getrequestDispatcher方法得到:
requestDispatcher内方法forword的方法称为请求转发。
如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,即http:
//localhost:
8080,如果location地址前没有加上“/”,则表示相对于当前请求的URI来寻找地址。
既:
RequestDispatcherrd=request.getrequestDispatcher(my.jsp);
Rd.forward(req,resp);
2.HttpServletresponse内有一方法sendRedirect此方法称为重定向。
既:
response.sendRedirect("/my.jsp");
3.请求转发与重定向的区别。
1)请求转发,整个过程处于同一个请求当中
2)重定向。
实际上客户端会向服务器端发送两个请求。
3)RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
4)sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
JavaWebLesson6
1.可以在setproperty>中通过param参数为bean的属性动态赋值。
对应的servlet代码是:
2.javabean的存活范围:
3.当将javabean放在session存活范围内时:
生成的servlet代码为:
4.当将javabean放在application范围内时:
5.生成的servlet代码为:
6.每一个servlet都必须实现servlet接口,GernericServlet是一个通用的、不特定任何协议的Servlet,他实现了servlet接口,而HttpServlet继承了GerbericServlet,所以也就实现了Servlet接口。
所以我们定义的Servlet只需要继承HttpServlet父类即可。
7.Servlet接口定义了一个service方法。
HttpServlet对该方法进行了实现,实现方式就是将ServletRequest与ServletResponse转换为HttpServletRequest与HttpServletResponse
8.转换完毕后,会调用HttpServlet类中自己定义的service方法,如下所示
9.在该service方法中,首先获得到请求的方法名,然后根据方法名调用对应的doXXX方法,比如说请求方法为GET,那么就去调用doGet方法;请求方法为POST,那么就去调用doPost方法。
10.在HttpServlet类中所提供的doGet、doPost等方法都是直接返回错误信息,所以我们需要在自己定义的Servlet类中override这些方法
11.源码面前,了无秘密
12.Servelt核心API之间的关系UML图:
13.Servlet的启动
Servlet过滤器(Filter)
1.
.Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。
•Servlet过滤器能够在Servlet被调用之前检查Request对象,修改RequestHeader和Request内容;
•在Servlet被调用之后检查Response对象,修改ResponseHeader和Response内容。
Servlet过滤器负责过滤的Web组件可以是Servlet、JSP或HTML文件。
2.
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。
这个接口含有3个过滤器类必须实现的方法:
–init()
–doFilter()
–destroy()
3.
init(FilterConfig):
这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。
在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数
•doFilter(ServletRequest,ServletResponse,FilterChain):
这个方法完成实际的过滤操作。
当客户请求访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。
FilterChain参数用于访问后续过滤器
•destroy():
Servlet容器在销毁过滤器实例前调用该方法,在这个方法中可以释放Servlet过滤器占用的资源