关于Servlet学习(下)

      上一篇讲了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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值