关于Servlet学习(下)

来源:互联网 发布:c语言二维数组排序方法 编辑:程序博客网 时间:2024/05/16 09:42

      上一篇讲了Servlet的入门,现在开始以事件作为驱动来学习Servlet。

       本篇我们从一个一个例子来开始学习。


       实例一:我们 将会编写一个带表单的HTML页面,表单提供用户输入姓名和密码,然后提交给一个Servlet处理,在Servlet中,我们从提交的表单信息中取出用户姓名和密码,然后加上欢迎信息输出到客户浏览器端,以此达到模拟登录的目的。

       首先编写一个简单的html页面welcome.html:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>用户登录</title></head><body><form action="welcome" method="post">用户名:<input type="text" name="username"/>密  码:<input type="password" name="userpasd"/></form></body></html>

       然后编写一个Servlet类Welcome.java:

 

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //从request对象中取得用户的姓名和密码        String username = request.getParameter("username");        String userpasd = request.getParameter("userpasd");        String welInf = "Welcome you"+username+" your password is"+userpasd;        //设置返回文档类型        response.setContentType("text/html");        //取得输出对象        PrintWriter out = response.getWriter();        out.println("<html><head><title>");        out.println("welcome page!");        out.println("</title></head>");        out.println("<body>");        out.println(welInf);        out.println("</body></html>");        out.close();;    }    该Servlet中只编写了doPost方法,仍然让doGet调用doPost方法。这里做出说明:HttpServletRequest的对象封装了客户端的请求消息,要获取请求中的某参数值可以使用该对象的getParameter()方法,该对象还有很多重要方法,具体查看API。

     最后修改配置文件,这里不再赘述了,配置完后运行效果如下:

:


    

     1.Servlet的生命周期

        (1)加载和实例化:当Servlet容器启动时,或者在容器检测到需要这个Servlet来相应第一个请求时,创建Servlet实例。

        (2).初始化:在Servlet实例化后容器必须调用Servlet的init()方法初始化这个对象,初始化的目的是为了让Servlet对象在处理客户请求前完成一些初始化工作。如建立数据库的连接等。

        (3)请求处理:Servlet容器调用Servlet的service()方法对请求进行处理

        (4)服务终止:当容器检测到Servlet实例应该从服务中移除的时候容器就会调用实例的destory()方法。

   

      2.Servlet的上下文

       运行在Java的虚拟机中的每一个web应用程序都有一个与之相关的Servlet上下文,在JavaServlet中提供了一个ServletContext接口用来表示上下文:该接口中有很多重要方法,比如getContext()、getRealPath()、getRequestDispatcher()等。

    3.Servlet的请求转发

       根据业务需求,某些Servlet在设计的时候会被设计成控制器的形式,负责管理业务请求转发。Servlet可以将请求转发到另外一个Servlet或者JSP等。这种转发的实现是由java.servlet.RequestDispatcher接口实现。

      RequestDispatcher对象由Servlet容器负责创建,用于封装一个由路径所标识的服务器资源,利用RequestDispatcher对象,就可以实现请求转发。该接口中有两个方法:

      (1)public   void  forward(ServletRequest  request,   ServletResponse   response):使用此方法时,Servlet将请求交给其他的Servlet,将由其他Servlet负责请求作出响应,而原先的Servlet的执行则终止了。

      (2)public  void  include(ServletRequest  request,   ServletResponse   response):使用此方法时,Servlet将请求交给其他Servlet,被调用的Servlet对该请求做出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应信息。

    通常有两种方法获取RequestDispatcher对象:利用ServletRequest借口红的getRequestDispatcher(String path)方法获取和ServletContext接口中的getRequestDispatcher(String path)

0 0