Servlet開發(1)
阿新 • • 發佈:2018-09-22
cat 客戶 在服務器 tco 運行 ali ppi conf -name
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;HelloWorldServlet.java5 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 @Override16 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 }
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
結果為
客戶端和服務器對比一目了然!!
Servlet開發(1)