日期:2014-05-19  浏览次数:20702 次

j2ee学习总结之servlet
******Servlet类的编写过程:
--继承自javax.servlet.http.HttpServlet
--覆盖超类中的doPost(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response)方法
--覆盖超类中的doGet(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response)方法
--在web.xml文件中配置
<servlet>
<servlet-name>...</servlet-name> --必须和下面的名字相同
<servlet-class>...</servlet-class> --该servlet文件具体的位置和名称
</servlet>
<servlet-mapping>
<servlet-name>...</servlet-name> --必须和上面的名字相同
<url-pattern>/...</url-pattern> --必须以“/”开头,表示http://localhost:8080/web应用名/
</servlet-mapping>

******Web应用服务器(Tomcat)对servlet的加载
1.在web.xml中设置了<load-on-startup>number</load-on-startup>
--当number大于或者等于0的时候,在服务器启动时就加载servlet;小于0则不加载(当第一个访问servlet时加载);
--当number大于或者等于0的时候,服务器按照从小到大的顺序加载servlet;
2.在web.xml中没有设置<load-on-starup>
--只有在Web容器收到浏览器对servlet的第一次请求的时候才对该servlet进行加载;

******Servlet请求转发和重定向:
1.重定向:
HttpServletResponse接口 sendRedirect("url")
1>当url以“/”开始的时候表示http://localhost:8080/;
2>当url不是以“/”开始的时候以相对于当前文件的路径;
3>当需要传递参数的时候,需要将参数拼接在url的后面(参数之间使用&来连接,参数列表和url之间使用?连接);

2.请求转发:
1>获取RequestDispatcher对象方式:
i.ServletRequest接口:getReque stDiapatcher("url")
--当url以“/”开始的时候,表示绝对路径,http://localhost:8080/Context Root/;
--当url不是以“/”开始的时候,表示相对路径,相对于当前文件的路径;
ii.ServletContext接口:getRequestDispatcher("url")
--url必须以“/”开始,表示http://localhost:8080/Context Root/;
2>forward(ServletRequest req,ServletResponse res)

3>include(ServletRequest req,ServletResponse res)
3.区别:
1>浏览器发出请求和收到响应的次数不同:
--重定向是两次;
--请求转发是一次;
2>是否对request和response对象是否共享:
--重定向是不共享的;
--请求转发是共享的;
3> 对资源的访问范围:
--请求转发只能访问同一个web应用的资源;
--重定向既可以访问同一个web应用的资源,也可以访问其它web应用中的资源;