zoukankan      html  css  js  c++  java
  • Servlet开发(1)

    Servlet开发

    Servlet引入:

    百度百科详细servlet介绍;

    重点概括:servlet运行在服务器上,处理用户请求。

    我们使用response来获取一个写方法 PrintWriter out=response.getWriter(); out.print("要输出的信息") 输出值到页面中。

     在HelloWorldServlet类中我们输出信息。

     1 package com.java1234.web;
     2 import java.io.IOException;
     3 import java.io.PrintWriter;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 public class HelloWorldServlet extends HttpServlet {
     9 
    10     /**
    11      * 
    12      */
    13     private static final long serialVersionUID = 1L;
    14 
    15     @Override
    16     protected void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18         // TODO Auto-generated method stub
    19         this.doPost(request, response);
    20     }
    21 
    22     @Override
    23     protected void doPost(HttpServletRequest request, HttpServletResponse response)
    24             throws ServletException, IOException {
    25         // TODO Auto-generated method stub
    26         response.setCharacterEncoding("gbk");
    27         PrintWriter out = response.getWriter();
    28         out.print("<html>");
    29         out.print("<head><title>Servlet开发</title></head>");
    30         out.print("问候servlet tmd");
    31         out.print("</html>");
    32         out.close();
    33     }
    34 
    35 }
    HelloWorldServlet.java

    web.xml文件配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
     3   <display-name>HeadFristJspServlet05</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13     <servlet-name>HelloWorldServlet</servlet-name>
    14     <servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17     <servlet-name>HelloWorldServlet</servlet-name>
    18     <url-pattern>/helloWorld</url-pattern>
    19   </servlet-mapping>
    20 </web-app>
    web.xml

    这个配置知识我们在学习JSP九大内置对象----config的时候学习过配置的基本过程和访问的时候跳转次序。

    Servlet的生命周期

    简单的概括分为四步:servlet类加载--->实例化---->服务----->销毁

    我们使用一个例子看一下完整的过程

    首先建一个类LifeServlet.java

     1 package com.java1234.web;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class LifeServlet extends HttpServlet{
    12 
    13     /**
    14      * 
    15      */
    16     private static final long serialVersionUID = 1L;
    17 
    18     @Override
    19     protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    20             throws ServletException, IOException {
    21         // TODO Auto-generated method stub
    22         System.out.println("service服务开始啦");
    23         this.doPost(request,response);
    24     }
    25 
    26     @Override
    27     protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    28             throws ServletException, IOException {
    29         // TODO Auto-generated method stub
    30         PrintWriter out=response.getWriter();
    31         out.print("servcice提供服务");
    32         System.out.println("servcice提供服务!");
    33     }
    34 
    35     @Override
    36     public void destroy() {
    37         // TODO Auto-generated method stub
    38         System.out.println("销毁service");
    39     }
    40 
    41     @Override
    42     public void init() throws ServletException {
    43         // TODO Auto-generated method stub
    44         System.out.println("实例化service");
    45     }
    46     
    47 }
    LifeServlet.java

    web.xml配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
     3   <display-name>HeadFristJspServlet05</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13       <servlet-name>LifeServlet</servlet-name>
    14       <servlet-class>com.java1234.web.LifeServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17       <servlet-name>LifeServlet</servlet-name>
    18       <url-pattern>/life</url-pattern>
    19   </servlet-mapping>
    20 </web-app>
    web.xml

    当我们客户端访问life时

    会出现:

    当我们在一段时间内不使用或者访问的时候。容器认为servlet没啥鸟用了 所以就销毁。。。。

    当然啦!init(初始化只会有一次)

     这个我们可以从这里看到(我们在客户端请求了两次):

    客户端跳转VS服务器端跳转

    1、在Servlet中获取session,application

    2、客户端跳转 response.sendRedirect(“目标地址”);

    我们无法获取request的信息。

    使用的类是

    RedirectServlet.java 代码如下

     1 package com.java1234.web;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletContext;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 import javax.servlet.http.HttpSession;
    11 public class RedirectServlet extends HttpServlet{
    12 
    13     /**
    14      * 
    15      */
    16     private static final long serialVersionUID = 1L;
    17 
    18     @Override
    19     protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    20             throws ServletException, IOException {
    21         // TODO Auto-generated method stub
    22         this.doPost(request, response);
    23     }
    24 
    25     @Override
    26     protected void doPost(HttpServletRequest request, HttpServletResponse response)
    27             throws ServletException, IOException {
    28         // TODO Auto-generated method stub
    29         request.setAttribute("requestKey", "request取值");//获取request
    30         HttpSession session=request.getSession();
    31         session.setAttribute("sessionKey", "session取值");//获取session
    32         ServletContext application=this.getServletContext();
    33         application.setAttribute("applicationKey", "applicaiton取值");//获取applicaiton
    34         response.sendRedirect("target-redirect.jsp");//客户端跳转/重定向
    35     }
    36 }
    RedirectServlet.java

    跳转的目标文件:

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     7 <title>target-redirect</title>
     8 </head>
     9 <body>
    10     <h1>Servlet取值</h1>
    11     <h6>request值:<%=request.getAttribute("requestKey") %></h6>
    12     <h6>session值:<%=session.getAttribute("sessionKey") %></h6>
    13     <h6>application值:<%=application.getAttribute("applicationKey") %></h6>
    14 </body>
    15 </html>
    target-redirect.jsp

    web.xml配置信息:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
     3   <display-name>HeadFristJspServlet05</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13     <servlet-name>HelloWorldServlet</servlet-name>
    14     <servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17     <servlet-name>HelloWorldServlet</servlet-name>
    18     <url-pattern>/helloWorld</url-pattern>
    19   </servlet-mapping>
    20   <servlet>
    21       <servlet-name>LifeServlet</servlet-name>
    22       <servlet-class>com.java1234.web.LifeServlet</servlet-class>
    23   </servlet>
    24   <servlet-mapping>
    25       <servlet-name>LifeServlet</servlet-name>
    26       <url-pattern>/life</url-pattern>
    27   </servlet-mapping>
    28   <servlet>
    29       <servlet-name>RedirectServlet</servlet-name>
    30       <servlet-class>com.java1234.web.RedirectServlet</servlet-class>
    31   </servlet>
    32   <servlet-mapping>
    33       <servlet-name>RedirectServlet</servlet-name>
    34       <url-pattern>/redirect</url-pattern>
    35   </servlet-mapping>
    36 </web-app>
    web.xml

    3、服务器跳转:使用的关键代码 RequestDispatcher rd=request.getRequestdispatcher(“目标地址”);rd.forward(request,response);

     文件为 ForwardServlet.java

     1 package com.java1234.web;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.RequestDispatcher;
     6 import javax.servlet.ServletContext;
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 import javax.servlet.http.HttpSession;
    12 public class ForwardServlet extends HttpServlet{
    13 
    14     /**
    15      * 
    16      */
    17     private static final long serialVersionUID = 1L;
    18 
    19     @Override
    20     protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    21             throws ServletException, IOException {
    22         // TODO Auto-generated method stub
    23         this.doPost(request, response);
    24     }
    25 
    26     @Override
    27     protected void doPost(HttpServletRequest request, HttpServletResponse response)
    28             throws ServletException, IOException {
    29         // TODO Auto-generated method stub
    30         request.setAttribute("requestKey", "request取值");//获取request
    31         HttpSession session=request.getSession();
    32         session.setAttribute("sessionKey", "session取值");//获取session
    33         ServletContext application=this.getServletContext();
    34         application.setAttribute("applicationKey", "applicaiton取值");//获取applicaiton
    35         RequestDispatcher rd=request.getRequestDispatcher("target-redirect.jsp");
    36         rd.forward(request, response);
    37     }
    38 }
    ForwardServlet.java

    目标文件:

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     7 <title>target-redirect</title>
     8 </head>
     9 <body>
    10     <h1>Servlet取值服务器</h1>
    11     <h6>request值:<%=request.getAttribute("requestKey") %></h6>
    12     <h6>session值:<%=session.getAttribute("sessionKey") %></h6>
    13     <h6>application值:<%=application.getAttribute("applicationKey") %></h6>
    14 </body>
    15 </html>
    target-redirect.jsp

    配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
     3   <display-name>HeadFristJspServlet05</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13     <servlet-name>HelloWorldServlet</servlet-name>
    14     <servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17     <servlet-name>HelloWorldServlet</servlet-name>
    18     <url-pattern>/helloWorld</url-pattern>
    19   </servlet-mapping>
    20   <servlet>
    21       <servlet-name>LifeServlet</servlet-name>
    22       <servlet-class>com.java1234.web.LifeServlet</servlet-class>
    23   </servlet>
    24   <servlet-mapping>
    25       <servlet-name>LifeServlet</servlet-name>
    26       <url-pattern>/life</url-pattern>
    27   </servlet-mapping>
    28   <servlet>
    29       <servlet-name>RedirectServlet</servlet-name>
    30       <servlet-class>com.java1234.web.RedirectServlet</servlet-class>
    31   </servlet>
    32   <servlet-mapping>
    33       <servlet-name>RedirectServlet</servlet-name>
    34       <url-pattern>/redirect</url-pattern>
    35   </servlet-mapping>
    36   <servlet>
    37   <servlet-name>ForwardServlet</servlet-name>
    38       <servlet-class>com.java1234.web.ForwardServlet</servlet-class>
    39   </servlet>
    40   <servlet-mapping>
    41       <servlet-name>ForwardServlet</servlet-name>
    42       <url-pattern>/forward</url-pattern>
    43   </servlet-mapping>
    44 </web-app>
    web.xml

    结果为

    客户端和服务器对比一目了然!!

  • 相关阅读:
    Highcharts 环境配置
    Highcharts 配置语法
    tsql语句分析工具 转
    C#编码规范 转 http://www.cnblogs.com/wulinfeng/archive/2012/08/31/2664720.html
    改善C#程序,提高程序运行效率的50种方法
    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
    配置handler vs2013 iis8.0
    14、正则表达式
    13、cookie
    11、事件(上)
  • 原文地址:https://www.cnblogs.com/zyxsblogs/p/9680035.html
Copyright © 2011-2022 走看看