servlet的转发和重定向

一.什么是servlet

servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

二.servlet类的编写

要继承HttpServlet,重写service()方法
    public void service(HttpServletRequest request,HttpServletResponse response){
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        根据页面传来的数据包,进行下一步处理  用request.getParameter("括号内为String的字符串,是html提交数据的标签的name              值");

        然后调用dao或者java类的方法进行业务处理
        建立entity实例        

        因为有关和数据库连接处理的业务我们都放在了dao中,所以此处不写.
    }    

三.需要在web.xml中配置servlet

建立和html页面连接的配置文件 web.xml
    该文件在Deployed Resources/webapp/WEB-INF/web.xml
    改配置文件中的内容
    <servlet>
              <servlet-name>一个名字</servlet-name>
              <servlet-class>包名.类名</servlet-class>
      </servlet>
      <servlet-mapping>
              <servlet-name>一个名字,和上面的一样</servlet-name>
              <url-pattern>/路径</url-pattern>   
      </servlet-mapping>

四.区别

forward()与redirect()的区别?

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
 

什么情况下调用doGet()和doPost()?

Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()

五.如何转发和重定向

请求转发:

request.getRequestDispatcher().forward();

重定向:

response.sendRedirect();

例如:

请求转发:

request.getRequestDispatcher("/student_list.jsp").forward(request,response);

重定向:

response.sendRedirect(request.getContextPath + "/student_list.jsp")

      1、转发是在服务器端完成的,重定向是在客户端发生的;

       2、转发的速度快,重定向速度慢;

       3、转发是同一次请求,重定向是两次请求;

       4、转发地址栏没有变化,重定向地址栏有变化;

       5、转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值