zoukankan      html  css  js  c++  java
  • [原创]java WEB学习笔记08:HttpServletRequest & ServletRequest

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

    内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

    本人互联网技术爱好者,互联网技术发烧友

    微博:伊直都在0221

    QQ:951226918

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1.HttpServletRequest 简介

      1)Servlet API 中定义的 ServletRequest 接口类用于封装请求消息

      2)HttpServletRequest 是专用于HTTP协议的ServletRequest 子接口,它用于封装 HTTP 请求消息

      3)在 service() 方法内部调用 HttpServletRequest 对象的各种方法来获取请求消息。每次请求都会调用servece()方法

    2.获取请求行的相关信息:ServletRequest,HttpServletRequest 

    本部分值列举出部分的API,详细参考   ServletRequest ,HttpServletRequest

    1)ServletRequest

      获取参数

      ① ServletRequest:封装了请求信息,可以获取到任何的请求信息。这两个接口的实现类都是服务器给予实现的,并在服务器调用service方法时候传入

      ② String getParameter(String name):根据请求参数的名字,返回参数值

      ③ String[] getParameterValues(String name):根据请求参数的名字,返回请求参数对应的字符串数组。在例如“checkbox”比较方便

      ④ Map getParametrMap():返回请求参数的键值对:key->参数名 值:->参数值,String类型数组

      ⑤ Enumeration getParameterNames():返回参数名对应的enumeration对象,类似于ServletConfig(或ServletContext )的getInitPrameterNames()方法

    2)HttpServletRequest 

      获取请求行的相关信息 

      ① String getMethod():返回HTTP请求消息中的请求方式

      ② String getRequestURI():返回请求行中的资源名部分。

      ③ String getQueryString():返回请求行中的参数部分。

      ④ String getProtocol():返回请求行中的协议名和版本

      ⑤ String getContextPath():返回请求资源所属于的WEB应用程序的路径

      ⑥ String getPathInfo():返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头

      ⑦ String getPathTranslated():返回URL中的额外路径信息所对应的资源的真实路径

      ⑧ String getServletPath():Servlet的名称或Servlet所映射的路径

     

    获取网络连接信息

      ① String getRemoteAddr():返回发出请求的客户机的IP地址,其格式为“192.168.0.3”这种形式的字符文本。 (*)

      ② String getRemoteHost():返回发出请求的客户机的完整主机名,即“pc1.atguigu.com”这种格式

      ③ String getRemotePort():返回发出请求的客户机所使用的网络接口的端口号

      ④ String getLocalAddr():返回WEB服务器上接收当前请求的网络接口的IP地址

      ⑤ String getLocalName():返回WEB服务器上接收当前请求的网络接口的IP地址所对应的主机名。

      ⑥ String getLocalPort():返回WEB服务器上接收当前请求的网络接口的端口号

      ⑦ String getServerName():返回当前请求所指向的主机名

      ⑧ String getServerPort():返回当前请求所连接的服务器端口号

      ⑨ String getScheme():返回请求的协议名,例如http、https或ftp

      ⑩ String getRequestURL():返回客户端发出请求时的完整URL

     

     获取请求头信息 

      getHeader方法

      getHeaders方法

      getHeaderNames方法

      getIntHeader方法

      getDateHeader方法

      getContentType方法

      getContentLength方法

      getCharacterEncoding方法

     

    请求域属性

      存储在ServletRequest对象中的对象称之为请求域属性,属于同一个请求的多个处理模块之间可以通过请求域属性来传递对象数据

       setAttribute方法   getAttribute方法   removeAttribute方法   getAttributeNames方法

     

    代码一:login.html

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     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="LoginServlet" method="get">
     9     
    10         user:<input type="text" name="user"/>
    11         password:<input type="password" name="password"/>
    12         
    13         <br><br>
    14         
    15         interesting:
    16         <input type="checkbox" name="interesting" value="reading">Reading
    17         <input type="checkbox" name="interesting" value="game">Game
    18         <input type="checkbox" name="interesting" value="party">Party
    19         <input type="checkbox" name="interesting" value="shopping">Shopping
    20         <input type="checkbox" name="interesting" value="sport">Sport
    21         <input type="checkbox" name="interesting" value="tv">Tv
    22         <input type="checkbox" name="interesting" value="run">Run
    23         
    24         <input type="submit" value="submit"/>
    25         
    26     </form>
    27 </body>
    28 </html>

    代码二:web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xmlns="http://java.sun.com/xml/ns/javaee"
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     5     id="WebApp_ID" version="3.0">
     6     
     7 <servlet>
     8         <servlet-name>LoginServlet</servlet-name>
     9         <servlet-class>com.jason.javaweb.LoginServlet</servlet-class>    
    10     </servlet>
    11     
    12     <servlet-mapping>
    13         <servlet-name>LoginServlet</servlet-name>
    14         <url-pattern>/LoginServlet</url-pattern>
    15         
    16     </servlet-mapping>
    17 </web-app>

    代码三:LoginServlet.java

     1 package com.jason.javaweb;
     2 
     3 import java.io.IOException;
     4 import java.util.Arrays;
     5 import java.util.Enumeration;
     6 import java.util.Map;
     7 
     8 import javax.servlet.Servlet;
     9 import javax.servlet.ServletConfig;
    10 import javax.servlet.ServletException;
    11 import javax.servlet.ServletRequest;
    12 import javax.servlet.ServletResponse;
    13 import javax.servlet.http.HttpServletRequest;
    14 
    15 public class LoginServlet implements Servlet {
    16 
    17     @Override
    18     public void destroy() {
    19 
    20     }
    21 
    22     @Override
    23     public ServletConfig getServletConfig() {
    24         // TODO Auto-generated method stub
    25         return null;
    26     }
    27 
    28     @Override
    29     public String getServletInfo() {
    30         // TODO Auto-generated method stub
    31         return null;
    32     }
    33 
    34     @Override
    35     public void init(ServletConfig arg0) throws ServletException {
    36         // TODO Auto-generated method stub
    37 
    38     }
    39 
    40     @Override
    41     public void service(ServletRequest request, ServletResponse response)
    42             throws ServletException, IOException {
    43         // 获取请求参数 String getParameter(String name):根据请求参数的名字,返回参数值
    44         String user = request.getParameter("user");
    45         String password = request.getParameter("password");
    46         System.out.println(user + " , " + password);// eee , eee
    47 
    48         // String[] getParameterValues(String name):根据请求参数的名字,返回请求参数对应的字符串数组
    49         String[] interestings = request.getParameterValues("interesting");
    50         for (String interesting : interestings) {
    51             System.out.println("checked-->" + interesting);
    52             // checked-->reading checked-->game
    53         }
    54 
    55         // Enumeration
    56         // getParameterNames():返回参数名对应的enumeration对象,类似于ServletConfig(或ServletContext)的getInitPrameterNames()方法
    57         Enumeration<String> names = request.getParameterNames();
    58         while (names.hasMoreElements()) {
    59             String name = names.nextElement();
    60             String value = request.getParameter(name);
    61             System.out.println("~~~" + name + ":" + value);
    62             // ~~~user:eee ~~~password:eee ~~~interesting:reading
    63         }
    64 
    65         // Map getParametrMap():返回请求参数的键值对:key->参数名 值:->参数值,String类型数组
    66         Map<String, String[]> map = request.getParameterMap();
    67         for (Map.Entry<String, String[]> entry : map.entrySet()) {
    68             System.out.println("**" + entry.getKey() + " : "
    69                     + Arrays.asList(entry.getValue()));
    70             // **user : [eee]
    71             // **password : [eee]
    72             // **interesting : [reading, game]
    73         }
    74 
    75         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    76 
    77         // 获取请求的URL
    78         String url = httpServletRequest.getRequestURI();
    79         System.out.println("url  : " + url);// url : /javaWEB/LoginServlet
    80 
    81         // 获取请求方法
    82         String method = httpServletRequest.getMethod();
    83         System.out.println("method : " + method);// method : GET
    84 
    85         // 获取字符串儿=
    86         String queryString = httpServletRequest.getQueryString();
    87         System.out.println(queryString);// user=eee&password=eee&interesting=reading&interesting=game
    88 
    89         // 获取请求的servlet的映射路径
    90         String servletPath = httpServletRequest.getServletPath();
    91         System.out.println(servletPath);// /LoginServlet
    92 
    93     }
    94 
    95 }
  • 相关阅读:
    angularJS之基础知识(一)
    angularJS之$http:与服务器交互
    angualrJS之表单验证
    python实现命令行中的进度条原理
    通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标
    关于ArcGIS API for JavaScript中basemap的总结介绍(一)
    初学JAVA--分支语句
    移动端开发通用适配
    js中Number.toFixed()方法的理解
    <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5503242.html
Copyright © 2011-2022 走看看