额轻度发烧中打完的
注解@postConstruct与注解@preDestroy
从java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解;@postConstruct与@preDestry
。这两个注解被用来修饰一个非静态的void()方法,并且这个方法不能有抛出异常。使用注解修饰方法的时候可以写在方法呢的前面,也可以写在返回类型
或者void的前面举例如下
@postConstruct
public void someMethod(){
................
}
public @preDestory void anothedMethod(){
............................
}
被@postConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只被服务寝执行一次,
类似于Servlet的init()方式。postConstruct从字面上讲有构造函数之后运行的意思,但事实上
被@postconstruct修饰的方法会在构造函数之后init()方法之前运行。
被@preDestroy修饰的方法会在服务器运行结束之后运行,同样只被服务器运行一次
Servlet之间的跳转
servlet之间可以相互跳转,从一个Servlet程序跳转到另一个Servlet。利用servlet的跳转可以很容易的把一项任务按模块划分。
例如,一个servlet接收用户提交的数据,然后跳到另一个servlet中读取数据进行业务操作,然后再跳转到另一个servlet
进行显示。
转向(FORWARD)
转向是通过RequestDispatch对象的forward(HttpServletResquest req, HttpServletDispatcher res)方法来实现的。
RequestDispatch可以通过HttpServletRequest的getRequestDispacher()方法获得例如
RequestDispatcher dispartcher=request.getRequestDispatcher
("/servlet/LifeCycleServlet");
dispatcher.forward(request, response);
getRequestDispatcher()方法的参数必须要以“/”开始,“/”表示本web应用程序的根目录。如果要跳转到Servlet为http://localhost:
8080/servlet/LifeCycleServlet,则参数应为“/servlet/LifeCycleServlet"
转向技术是MVC框架中常用的技术转向不仅可以跳转到本应用的另一个Servlet.jsp页面,同时也可以跳转到另外一个文件。相关举例如下
public classForwardServlet extends HttpServlet{
public void doget(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExcption{
String destination=request.getparameter("destination");
if("file".equals(ddestination)){
RequestDispatcher d=request,getRequestDispatcher{"/WEB-INF/web.xml"}; 跳转到/WEB-INF/web,xml
d.forward("request,response");
}
else if("jsp".equals(destination)){
request.setAttribute("date",new date()); 给页面传递一个date参数
requestDispatcher dispatcher=request.getRequestDispatcher("/forward.jsp");
dispatcher.forward( request , response);
else if("servlet".equals(destination)){
("/servlet/LifeCycleServlet");
d.forward(request , response);
}
}
else if("servlet".equals(destination)){
("/servlet/LifeCycleServlet");
d.forward(request , response);
}
else{ response.setCharacterEnCoding("UTF-8");
response.getWriter().println("缺少参数。用法;"+request.getRequestURl()+"?destiination=jsp或者file或者Servlet“);
}
}
}
分析该段代码表明ForwardServlet中根据地址栏传入的destination参数的不同而跳转到不同的地方!
浙公网安备 33010602011771号