引用: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