Servlet的请求HttpServletRequest

简介: 一、从容器到HttpServlet1、web容器作了什么  web容器做的事情就是,创建Servlet实例,并完成Servlet的名称注册及URL模式的对应。在请求来到时,web容器会转发给正确的Servlet来处理请求。

一、从容器到HttpServlet

1、web容器作了什么

  web容器做的事情就是,创建Servlet实例,并完成Servlet的名称注册及URL模式的对应。在请求来到时,web容器会转发给正确的Servlet来处理请求。

  当请求来到http服务器时,而http服务器转交请求给容器时,容器会创建一个代表档次请求的HttpServletRequest对象,并将请求相关信息设置给该对象。同时,容器会创建一个HttpServletResponse对象,作为稍后要对客户端进行相应的java对象。

     

  接着,容器会根据读取的@webServlet标注或者xml的设置,找出处理该请求的servlet,调用它的service()方法,将创建的HttpServletRequest对象、HttpServletResponse对象传入作为参数,service()方法中会根据HTTP请求的方式,调用对应的doXXX()方法。接着再doXXX()方法中,可以使用request、resposne对象,如:getParameter()取得请求参数,使用getWriter()取得输出用的PrintWriter对象,并进行各项响应处理。对PrintWriter做的输出操作,最后由容器转换为HTTP响应,再由HTTP服务器对浏览器响应。之后容器将对象销毁。

    

2、关于HttpServletRequest

2.1 处理请求参数与标头

  String username = request.getParameter("name");指定请求参数名称来取得对应的值。如果传来的是"123"这样的字符串值,必须使用Integer.parseInt()这类方法剖析为基本类型。

  String[] values = request.getParameterValues("param");就像param=10&param=20&param=30,此时用getParameterValues()取得一个String数组。

  如果想要知道请求中有多少请求参数,则可以使用getParameterNames()方法,会返回一个Enumeration对象。

    Enumeration<String> e = request.getParameterNames();

    while(e.hasMoreElements()){

      String param = e.nextElement();

      ...

    }

  对于HTTP标头的信息(Header),可以通过以下方法取得:

    1、getHeader():使用方式与getParameter类似。

    2、getHeaders():与getParameterValues类似。

    3、getHeaderNames():与getParameterNames类似。

  以下的实例如何取得并显示浏览器送出的标头信息。

 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.util.Enumeration;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.annotation.WebServlet;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 /**
14  * Servlet implementation class HeaderServlet
15  */
16 @WebServlet("/header.view")
17 public class HeaderServlet extends HttpServlet {
18     private static final long serialVersionUID = 1L;
19        
20     /**
21      * @see HttpServlet#HttpServlet()
22      */
23     public HeaderServlet() {
24         super();
25         // TODO Auto-generated constructor stub
26     }
27 
28     /**
29      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
30      */
31     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32         // TODO Auto-generated method stub
33         PrintWriter out=response.getWriter();
34         out.println("<html>");
35         out.println("<head>");
36         out.println("<title>HeadServlet</title>");
37         out.println("</head>");
38         out.println("<body>");
39         out.println("<h1>HeaderServlet at "+request.getContextPath()+"</h1>");//取得应用程序环境路径
40         Enumeration<String> names=request.getHeaderNames();//取得所有标头名称
41         while(names.hasMoreElements()){
42             String name=names.nextElement();
43             out.println(name+": "+request.getHeader(name)+"<br>");//输出所有的标头值
44         }
45         out.println("</body>");
46         out.println("</html>");
47          out.close();
48     }
49 
50     /**
51      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
52      */
53     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
54         // TODO Auto-generated method stub
55     }
56 
57 }
HeaderServlet

  运行结果:

    

2.2 getReader()、getInputStream()读取Body内容

  getReader()方法,可以取得一个BufferedReader对象,可以读取Body数据。

  例子1:读取请求Body内容

 1 package cc.openhome;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.PrintWriter;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.annotation.WebServlet;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 /**
14  * Servlet implementation class BodyServlet
15  */
16 @WebServlet("/body.view")
17 public class BodyServlet extends HttpServlet {
18     private static final long serialVersionUID = 1L;
19        
20     /**
21      * @see HttpServlet#HttpServlet()
22      */
23     public BodyServlet() {
24         super();
25         // TODO Auto-generated constructor stub
26     }
27 
28     /**
29      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
30      */
31     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32         // TODO Auto-generated method stub
33         
34     }
35 
36     private String readBody(HttpServletRequest request) throws IOException {
37         // TODO Auto-generated method stub
38         BufferedReader reader=request.getReader();//取得BufferedReader对象
39         String input=null;
40         String requestBody="";
41         while((input=reader.readLine())!=null){
42             requestBody=requestBody+input+"<br>";
43         }
44         return requestBody;
45     }
46 
47     /**
48      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
49      */
50     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
51         // TODO Auto-generated method stub
52         String body=readBody(request);
53         PrintWriter out=response.getWriter();//取得响应输出对象
54         out.println("<html>");
55         out.println("<head>");
56         out.println("<title>Servlet BodyView</title>");
57         out.println("</head>");
58         out.println("<body>");
59         out.println(body);
60         out.println("</body>");
61         out.println("</html>");
62         out.close();
63     }
64 
65 }
BodyServlet
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <form action="body.view" method="post">
 9         名称:<input type="text" name="user"><br>
10         密码:<input type="password" name="passwd"><br><br>
11         <input type="submit" name="login" value="送出">
12     </form>
13 </body>
14 </html>
form.html

 

 在名称字段上输入“良葛格”,密码上输入“123456”,单机送出按钮,得到:

    

2.3 getPart()、getParts()取得上传文件

  Servlet3.0中,新增了Part接口,可以方便进行文件上传处理。可以通过request对象的getPart()方法取得Part对象。

  例1:上传文件到指定目录。

 1 package cc.openhome;
 2 
 3 import java.io.FileOutputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.annotation.MultipartConfig;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 import javax.servlet.http.Part;
15 
16 
17 /**
18  * Servlet implementation class PhotoServlet
19  */
20 @MultipartConfig(location="e:/java web/workspace/")//设置location属性
21 @WebServlet("/photo.do")
22 public class PhotoServlet extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24        
25     /**
26      * @see HttpServlet#HttpServlet()
27      */
28     public PhotoServlet() {
29         super();
30         // TODO Auto-generated constructor stub
31     }
32 
33     /**
34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         // TODO Auto-generated method stub
38     }
39 
40     /**
41      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
42      */
43     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44         // TODO Auto-generated method stub
45         request.setCharacterEncoding("UTF-8");
46         Part part=request.getPart("photo");
47         String filename=getFilename(part);
48         //writeTo(filename,part);
49         part.write(filename);//将文件写入location的指定目录
50     }
51 
52 //    private void writeTo(String filename, Part part) throws IOException {
53 //        // TODO Auto-generated method stub
54 //        InputStream in=part.getInputStream();
55 //        OutputStream out=new FileOutputStream("e:/java web/workspace/"+filename);
56 //        byte[] buffer=new byte[1024];
57 //        int length=-1;
58 //        while((length=in.read(buffer))!=-1){
59 //            out.write(buffer,0,length);
60 //        }
61 //        in.close();
62 //        out.close();
63 //    }
64 
65     private String getFilename(Part part) {
66         // TODO Auto-generated method stub
67         String header=part.getHeader("Content-Disposition");
68         String filename=header.substring(header.indexOf("filename=\"")+10,header.lastIndexOf("\""));
69         return filename;
70     
71     }
72 
73 }
UploadServlet.java
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <form action="photo.do" method="post" enctype="multipart/form-data">
 9         上传相片:<input type="file" name="photo" value="" /><br>
10         <input type="submit" name="upload" value="上传">
11     </form>
12 </body>
13 </html>
upload.html

  在Tomcat中必须设置@MultipartConfig标注才能使用getPart()相关API。@MultipartConfig也可以设置属性,比如location。@MultipartConfig(location="c:/workspace"),则上例子就可以修改为:

 1 package cc.openhome;
 2 
 3 import java.io.FileOutputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.annotation.MultipartConfig;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 import javax.servlet.http.Part;
15 
16 
17 /**
18  * Servlet implementation class PhotoServlet
19  */
20 @MultipartConfig(location="e:/java web/workspace/")//设置location属性
21 @WebServlet("/photo.do")
22 public class PhotoServlet extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24        
25     /**
26      * @see HttpServlet#HttpServlet()
27      */
28     public PhotoServlet() {
29         super();
30         // TODO Auto-generated constructor stub
31     }
32 
33     /**
34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         // TODO Auto-generated method stub
38     }
39 
40     /**
41      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
42      */
43     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44         // TODO Auto-generated method stub
45         request.setCharacterEncoding("UTF-8");
46         Part part=request.getPart("photo");
47         String filename=getFilename(part);
48         //writeTo(filename,part);
49         part.write(filename);//将文件写入location的指定目录
50     }
51 
52 //    private void writeTo(String filename, Part part) throws IOException {
53 //        // TODO Auto-generated method stub
54 //        InputStream in=part.getInputStream();
55 //        OutputStream out=new FileOutputStream("e:/java web/workspace/"+filename);
56 //        byte[] buffer=new byte[1024];
57 //        int length=-1;
58 //        while((length=in.read(buffer))!=-1){
59 //            out.write(buffer,0,length);
60 //        }
61 //        in.close();
62 //        out.close();
63 //    }
64 
65     private String getFilename(Part part) {
66         // TODO Auto-generated method stub
67         String header=part.getHeader("Content-Disposition");
68         String filename=header.substring(header.indexOf("filename=\"")+10,header.lastIndexOf("\""));
69         return filename;
70     
71     }
72 
73 }
UploadServlet.java

  如果有多个文件要上传,可以使用getParts方法,这回返回一个Collection<Part>,其中是每个上传文件的part对象。  

  例子2:上传多个文件

  1 package cc.openhome;
  2 
  3 import java.io.DataInputStream;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.io.UnsupportedEncodingException;
  7 
  8 import javax.servlet.ServletException;
  9 import javax.servlet.annotation.WebServlet;
 10 import javax.servlet.http.HttpServlet;
 11 import javax.servlet.http.HttpServletRequest;
 12 import javax.servlet.http.HttpServletResponse;
 13 
 14 
 15 
 16 /**
 17  * Servlet implementation class UploadServlet
 18  */
 19 @WebServlet("/upload.do")
 20 public class UploadServlet extends HttpServlet {
 21     private static final long serialVersionUID = 1L;
 22        
 23     /**
 24      * @see HttpServlet#HttpServlet()
 25      */
 26     public UploadServlet() {
 27         super();
 28         // TODO Auto-generated constructor stub
 29     }
 30 
 31     /**
 32      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 33      */
 34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 35         // TODO Auto-generated method stub
 36     }
 37 
 38     /**
 39      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 40      */
 41     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 42         // TODO Auto-generated method stub
 43         request.setCharacterEncoding("UTF-8");
 44         //锟斤拷取锟斤拷锟斤拷Body
 45         byte[] body=readBody(request);
 46         //取锟斤拷锟斤拷锟斤拷Body锟斤拷锟捷碉拷锟街凤拷锟斤拷锟斤拷示
 47         String textBody=new String(body,"UTF-8");
 48         //取锟斤拷锟较达拷锟斤拷锟斤拷锟斤拷锟侥硷拷
 49         String filename=getFilename(textBody);
 50         //取锟斤拷锟侥硷拷锟斤拷始锟斤拷锟斤拷锟轿伙拷锟�
 51         Position p=getFilePosition(request,textBody);
 52         //锟斤拷锟斤拷锟斤拷募锟�
 53         writeTo(filename,body,p);
 54     }
 55 
 56     private void writeTo(String filename, byte[] body, Position p) throws IOException {
 57         // TODO Auto-generated method stub
 58         FileOutputStream fileOutputStream=new FileOutputStream("e:/java web/workspace/"+filename);
 59         fileOutputStream.write(body,p.begin,(p.end-p.begin));
 60         fileOutputStream.flush();
 61         fileOutputStream.close();
 62     }
 63 
 64     private Position getFilePosition(HttpServletRequest request, String textBody) throws UnsupportedEncodingException {
 65         // TODO Auto-generated method stub
 66         //取得实际上传的文件
 67         String contentType=request.getContentType();
 68         String boundaryText=contentType.substring(contentType.lastIndexOf("=")+1,contentType.length());
 69         //取得实际上传的文件
 70         int pos=textBody.indexOf("filename=\"");
 71         pos=textBody.indexOf("\n",pos)+1;
 72         pos=textBody.indexOf("\n",pos)+1;
 73         pos=textBody.indexOf("\n",pos)+1;
 74         int boundaryLoc=textBody.indexOf(boundaryText,pos)-4;
 75         int begin=((textBody.substring(0,pos)).getBytes("GBK")).length;
 76         int end=((textBody.substring(0,boundaryLoc)).getBytes("GBK")).length;
 77         return new Position(begin, end);
 78     }
 79 
 80     private String getFilename(String textBody) {
 81         // TODO Auto-generated method stub
 82         String filename=textBody.substring(textBody.indexOf("filename=\"")+10);
 83         filename=filename.substring(0,filename.indexOf("\n"));
 84         filename=filename.substring(filename.lastIndexOf("\\")+1,filename.indexOf("\""));
 85         return filename;        
 86     }
 87 
 88     private byte[] readBody(HttpServletRequest request) throws IOException {
 89         // TODO Auto-generated method stub
 90         int formatDataLength=request.getContentLength();
 91         DataInputStream dataStream=new DataInputStream(request.getInputStream());//取锟斤拷InputStraem锟侥讹拷锟斤拷
 92         byte body[]=new byte[formatDataLength];
 93         int totalBytes=0;
 94         while(totalBytes<formatDataLength){
 95             int bytes=dataStream.read(body,totalBytes,formatDataLength);
 96             totalBytes+=bytes;
 97         }
 98         return body;
 99     }
100 
101 }
102 class Position{
103     int begin;
104     int end;
105     public Position(int begin,int end) {
106         // TODO Auto-generated constructor stub
107         this.begin=begin;
108         this.end=end;
109     }
110 }
UploadServlet2.java
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <form action="upload1.do" method="post" enctype="multipart/form-data">
 9         文件1:<input type="file" name="file1" value="" /><br>
10         文件2:<input type="file" name="file2" value="" /><br>
11         文件3:<input type="file" name="file3" value="" /><br><br>
12         <input type="submit" name="upload" value="上传"/>
13     </form>
14 </body>
15 </html>
multi-upload.html

2.4 使用RequestDispatcher调派请求

  在web应用程序中,经常需要多个Servlet来完成请求。例如,将另一个Servlet的请求处理流程包含进来,或者将请求转发forward给别的servlet处理。可以使用:

    RequestDispatcher dispatcher = request.getRequestDispatcher("some.do");

  (1)、使用include()方法

    将另一个servlet的操作流程包括至目前的servlet操作之中。

    例1:include方法

 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.RequestDispatcher;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.annotation.WebServlet;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 /**
14  * Servlet implementation class Some
15  */
16 @WebServlet("/some.view")
17 public class Some extends HttpServlet {
18     private static final long serialVersionUID = 1L;
19        
20     /**
21      * @see HttpServlet#HttpServlet()
22      */
23     public Some() {
24         super();
25         // TODO Auto-generated constructor stub
26     }
27 
28     /**
29      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
30      */
31     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32         // TODO Auto-generated method stub
33         PrintWriter out=response.getWriter();
34         out.println("Some do one...");
35         RequestDispatcher dispatcher=request.getRequestDispatcher("other.view?data=123456");
36         dispatcher.include(request, response);
37         out.println("Some do two...");
38         out.close();
39     }
40 
41     /**
42      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
43      */
44     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45         // TODO Auto-generated method stub
46     }
47 
48 }
some.java
 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 /**
13  * Servlet implementation class OtherServlet
14  */
15 @WebServlet("/other.view")
16 public class OtherServlet extends HttpServlet {
17     private static final long serialVersionUID = 1L;
18        
19     /**
20      * @see HttpServlet#HttpServlet()
21      */
22     public OtherServlet() {
23         super();
24         // TODO Auto-generated constructor stub
25     }
26 
27     /**
28      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
29      */
30     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
31         // TODO Auto-generated method stub
32         PrintWriter out=response.getWriter();
33         out.println("Other do one..");
34     }
35 
36     /**
37      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
38      */
39     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40         // TODO Auto-generated method stub
41     }
42 
43 }
othersome.java

   运行结果:网页上看到响应顺序是Some do one ... Other do one... Some do two.. .    

  (2)、使用forward()方法

    将处理请求转发给别的Servlet。

    例2:forwod方法

 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.ServletException;
 6 import javax.servlet.annotation.WebServlet;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 import com.sun.javafx.sg.prism.NGShape.Mode;
12 import com.sun.media.sound.ModelAbstractChannelMixer;
13 
14 /**
15  * Servlet implementation class HelloController
16  */
17 @WebServlet("/hello.do")
18 public class HelloController extends HttpServlet {
19     private static final long serialVersionUID = 1L;
20     private HelloModel model=new HelloModel();
21     /**
22      * @see HttpServlet#HttpServlet()
23      */
24     public HelloController() {
25         super();
26         // TODO Auto-generated constructor stub
27     }
28 
29     /**
30      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
31      */
32     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
33         // TODO Auto-generated method stub
34         String name=request.getParameter("user");//收集请求参数
35         String message=model.doHello(name);//委托HelloModel对象处理
36         request.setAttribute("message", message);//将结果信息设置至请求对像成属性
37         request.getRequestDispatcher("hello1.view").forward(request, response);
38     }
39 
40     /**
41      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
42      */
43     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44         // TODO Auto-generated method stub
45         
46     }
47 
48 }
HelloController.java
 1 package cc.openhome;
 2 
 3 import java.util.*;
 4 
 5 
 6 
 7 public class HelloModel {
 8     private Map<String, String>messages=new HashMap<String,String>();
 9     public HelloModel(){
10         messages.put("caterpillar", "Hello");
11         messages.put("Justin", "Welcome");
12         messages.put("momor", "Hi");
13     }
14     public String doHello(String user){
15         String message=messages.get(user);
16         return message+", "+user+"!";
17     }
18 }
HelloModel.java 
 1 package cc.openhome;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 /**
11  * Servlet implementation class HelloView
12  */
13 @WebServlet("/hello1.view")
14 public class HelloView extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16     private String htmlTemplate=
17               "<html>"
18             +     "<head>"
19             +        "<meta http-equiv='Content-Type'"
20             +            "content='text/html; charset=UTF-8'>"
21             +        "<title>%s</title>"
22             +    "</head>"
23             +    "<body>"
24             +        "<h1>%s</h1>"
25             +    "</body>"
26             +"</html>"; 
27     /**
28      * @see HttpServlet#HttpServlet()
29      */
30     public HelloView() {
31         super();
32         // TODO Auto-generated constructor stub
33     }
34 
35     /**
36      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
37      */
38     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
39         // TODO Auto-generated method stub
40         String user=request.getParameter("user");//取得请求参数
41         String message=(String) request.getAttribute("message");//取得请求属性
42         String html=String.format(htmlTemplate, user,message);//产生html结果
43         response.getWriter().print(html);//输出html结果
44         
45     }
46 
47     /**
48      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
49      */
50     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
51         // TODO Auto-generated method stub
52     }
53 
54 }
HelloView.java

  运行结果:(Model2架构)

    

 

当神已无能为力,那便是魔渡众生
目录
相关文章
|
6月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 客户端 HTTP 请求 3
该教程展示了如何在Servlet中处理客户端HTTP请求,特别是获取HTTP头信息。示例代码创建了一个名为`DisplayHeader`的Servlet,它扩展了`HttpServlet`并重写了`doGet`方法。在`doGet`中,使用`HttpServletRequest`的`getHeaderNames()`遍历所有头部,显示其名称和对应值。Servlet在TomcatTest项目下,通过`web.xml`配置映射到`/TomcatTest/DisplayHeader`路径。
56 14
|
6月前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
53 8
|
2月前
|
JavaScript Java 容器
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
本文简要回顾了Servlet过滤器Filter的概念和使用,通过实例演示了如何创建过滤器以过滤请求字符编码,并解释了在web.xml中配置过滤器时使用`/`、`/*`和`/**`的区别。
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
|
6月前
Servlet 教程 之 Servlet 客户端 HTTP 请求 1
Servlet教程讲解了客户端HTTP请求,包括各种重要头信息:Accept(定义可处理的MIME类型)、Accept-Charset(指定字符集)、Accept-Encoding(处理的编码类型)、Accept-Language(首选语言)、Authorization(身份验证)、Connection(是否支持持久连接)、Content-Length(POST数据大小)、Cookie(返回cookies)、Host(指定URL的主机和端口)、If-Modified-Since(检查页面更新)、If-Unmodified-Since(条件性操作)。
33 0
|
缓存 Java 数据库
Servlet 处理请求的原理
Servlet 处理请求的原理
197 0
|
6月前
|
Web App开发 前端开发 JavaScript
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
70 0
|
Java 容器
Jsp之四 servlet请求响应
Jsp之四 servlet请求响应
70 0
|
存储 应用服务中间件 数据库
Servlet请求转发和重定向
Servlet请求转发和重定向
166 0
|
应用服务中间件 API
JavaWeb 速通Servlet(请求转发和请求重定向)
JavaWeb——HttpServletRequest 和 HttpServletResponse 内容分享。
176 0
|
XML 编解码 前端开发
JavaWeb《二》Servlet、Request请求
本文是javaweb的第二篇,介绍了Servlet,Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。 概述了Request请求与响应,并且主要分析了Request请求。
129 0
JavaWeb《二》Servlet、Request请求