额轻度发烧中打完的

Servlet生命周期与转向技术
本文介绍了Servlet中的@postConstruct与@preDestroy注解的作用及使用方法,并详细解释了Servlet之间的跳转技术,包括如何利用RequestDispatcher对象实现转向。

注解@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参数的不同而跳转到不同的地方!

转载于:https://www.cnblogs.com/a464566082/archive/2013/02/04/2891625.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值