zoukankan      html  css  js  c++  java
  • 5、Servlet的使用

    一、什么是Servlet:用于开发动态Web资源的的技术。使用Servlet可以读取来自用户端的数据,而实现了用户与服务器之间的动态数据交互。更简单的说就是连接页面和代码。

      1、开发一个动态的Web资源,需要两个步骤:

        a)、编写一个Java类,实现Servlet接口。

        b)、把开发好的Java类部署到Web服务器中。

      2、Service的配置:一般配置在web.xml文件中:

     1  <servlet>
     2      <!-- 设置Servlet的注册名 -->
     3      <servlet-name>gfsjkh</servlet-name>
     4      <!-- 设置Servlet的完整类名,即实现这个Servlet的类 -->  
     5      <servlet-class>com.st.servlet.UserServlet</servlet-class>
     6   </servlet>
     7   <servlet-mapping>
     8       <!-- 与上面设置的Servlet的注册名保持一致 -->
     9       <servlet-name>gfsjkh</servlet-name>
    10       <!-- 设置Servlet的对外访问路径 -->
    11       <url-pattern>/servlet/user</url-pattern>
    12   </servlet-mapping>

        【注】a)、同一个Servlet可以映射到多个url上去,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名

             b)、Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种格式是以正斜杠(/)开头以"/*"结尾

        对应的jsp页面内容为:

     1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <title>Servlet示例</title>
    11   </head>
    12   
    13   <body>
    14     <form  method="get"  action="servlet/user">
    15          <table>
    16             <tr>
    17                <td><input type="text" id="userNameId" name ="userName" value="zhangsan"/></td>
    18             </tr>
    19             <tr>
    20                <td><input type="text" id="userAgeId" name ="userAge" value="22"/></td>
    21             </tr>
    22             <tr>
    23                <td><input type="submit"  value="提交" /></td>
    24             </tr>
    25          </table>
    26     </form>
    27     
    28     
    29   </body>
    30   
    31 </html>

      3、Servlet接口实现类:GenericServlet、HttpServlet。

        a)、HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。

             因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不需要去覆写service方法。

         b)、继承HttpServlet重写方法:doGetdoPost

     1 /*
     2  * 继承HttpServlet
     3  */
     4 public class UserServlet extends HttpServlet{
     5 
     6     @Override
     7     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
     8             throws ServletException, IOException {
     9         //获取jsp页面中标签的name标记为userName的标签的value值
    10         System.out.println(req.getParameter("userName"));
    11         //获取jsp页面中标签的name标记为userAge的标签的value值
    12         System.out.println(req.getParameter("userAge"));
    13     }
    14     @Override
    15     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    16             throws ServletException, IOException {
    17         this.doGet(req, resp);
    18     }
    19 }

        【注】

           a)、通常情况下,客户端的多次Servlet请求,服务器只会创建一个Servlet实例对象,即Servlet实例对象一旦被创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

             b)、在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。

            对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法。

      4、Servlet的生命周期:

          a)、实例化
          b)、初始化 init()
          c)、响应请求 service()
          d)、销毁 destory()   --Web容器退出的时候

  • 相关阅读:
    逻辑代码题:五个学生参加计算机比赛
    逻辑代码题:如果昨天是明天,那今天就是周五了
    面试题:二叉树的遍历
    面试题:判断链表是否存在环
    面试题:将字符串中的中英文分开显示
    N皇后
    2017<java技术>预备作业2计科陈刚
    transition+transform合并效果案例
    transition CSS3动画属性之过渡
    Less 编译的几种方式
  • 原文地址:https://www.cnblogs.com/czj-zhm/p/5841377.html
Copyright © 2011-2022 走看看