JavaWeb学习笔记——servlet

来源:互联网 发布:勒索软件 中国 编辑:程序博客网 时间:2024/05/17 19:18

一、servlet简介

        java Servlet 是运行在 Web服务器或应用服务器上的程序,它是作为来自 Web浏览器或其他 HTTP客户端的请求和 HTTP服务器上的数据库或应用程序之间的中间层。

二、Servlet主要作用功能

       (1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。

       (2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。

       (3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

       (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。

       (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet 的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。

      (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。

      (7) 将定制的处理提供给所有服务器的标准例行程序。

三、servlet生命周期

Servlet的生命周期是从该servlet创建到注销的整个过程,整个过程中servlet会执行以下的过程:

  • 调用init () 方法进行初始化。
  • 调用service() 方法来处理客户端的请求。
  • 调用 destroy() 方法终止(结束)。
  • 最后由 JVM 的垃圾回收器进行垃圾回收。

        1、Init()方法:

              该方法只在创建servlet时候调仅调用一次,以后不再调用该方法,当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

        2、Service()方法:

             service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

        3、destroy()方法:

              该方法只在该servlet注销之前调用一次,且在servlet的生命周期中只会调用一次


四、登陆实例

       1、登陆界面的实现

<form action="<%= request.getContextPath() %>/login" method ="get"><table align="center"><tr><td colspan=3><h2>用户登录</h2></td></tr><tr><td>用户名:</td><td colspan="2"><input type="text" name="uname"id="user_name" /></td></tr><tr><td>密  码:</td><td colspan="2"><input type="password" name="upwd"id="password" /></td></tr><tr><td></td><td><input type="submit" value="登录" /> <input type="reset"value="重置" /></td><td></td></tr></table></form>

     

        注:如果jsp文件是直接在WebContent下面,而不在WebContent下的文件夹中,此时,jsp文件中的action中路径应为  action="login %>"

servlet实现需要在web.xml中配置相应名称和路径,如下

  <servlet>  <servlet-name>LoginServlet</servlet-name>  <servlet-class>com.servlet.LoginServlet</servlet-class>  </servlet>    <servlet-mapping>  <servlet-name>LoginServlet</servlet-name>  <url-pattern>/login</url-pattern>  </servlet-mapping>


     2、Servlet实现

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("=====进入doPost方法=====");String userName = req.getParameter("uname");String password = req.getParameter("upsw");System.out.println(userName);System.out.println(password);String forward = null;//请求转发if(userName.equals("aaa") && password.equals("123")){forward = "/01/success.jsp";//转发地址req.getRequestDispatcher(forward).forward(req, resp); //forward完成转发操作//getRequestDispatcher封装转发的操作,接收来自客户端的请求,然后将其转发到之指定的资源上去}else{forward = "/01/errpr.jsp";req.getRequestDispatcher(forward).forward(req, resp);}//请求重定向//if(userName.equals("aaa") && password.equals("123")){//resp.sendRedirect(req.getContextPath() + "/01/success.jsp");//}//else{//resp.sendRedirect(req.getContextPath() + "/01/error.jsp");//}}

        整个处理流程:浏览器的请求首先发送给LoginServletLoginServlet处理完毕之后,会将request对象和response对象传递给success.jsp,这个传递的过程称为请求转发。整个过程只涉及一次服务器与浏览器之间的交互,也就是说只有一次请求相应,在整个的转发过程中,各组件享用同一组请求和响应对象。关于转发的具体操作有一点需要注意,转发只能在统一应用的组件之间进行,不能转发给其他应用的组件,而请求重定向是可以转发给其他应用的地址。


0 0
原创粉丝点击