轻量级Java EE 企业应用实战-JSP笔记(三)-servlet

时间:2022-06-16 21:06:43

引用:http://blog.csdn.net/sustbeckham/article/details/6288982

 

常见的servlet文件夹目录:

项目名称-ServletDemo

       --WEB_INF

          --classes #src中java源文件生成的class文件

          --lib#依赖的库文件

          --src#java源文件

          --web.xml(若用annotation可以不用在此配置Servlet和ServletMapping)

     JSP文件

 

Servlet的生命周期:

       启动-Servlet启动即创建实例或被请求第一次时创建  -》初始化(init方法从web.xml或annotation中获取initParam参数) -》接收请求(doGet等或者service参数)并处理 -》需要销毁时,调用destroy

 

annotation配置Servlet:

1)import javax.servlet.annotation.*;

2)在类前增加:@WebServlet(name=“”

                                ,urlPatterns={""})

     其中name表示Servlet类的名称,而urlPattern对应mapping中的URL标识

     如果需要增加其他参数,另起一行增加对应的参数名

 

其他:

RequestDispatcher-常用MVC中的Controller中,转发请求

     调用方法-request.getRequestDispatcher(filename)#动态获取jsp对象

     区别:

  

     HttpServletResponse.sendRedirect()方法将响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如response.sendRedirect(http://java.sun.com)    也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。

    RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。
   

    注意:

    使用必须在给请求者返回相应前调用,否者会抛异常IllegalStateException

    调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除

 

   RequestDispatcher常用方法:forward和include