JavaWeb总结(五)

news/2024/7/7 1:52:47 标签: java, 大数据

使用Servlet接受服务器请求信息

 

HTTP请求示例

HttpServletRequest对象主要用于获取由客户端发送过来的请求头、参数、文件、数据等。Servlet存在的主要目的就是处理请求。Servlet规范中对此对象进行了增强,使其还可以与Web应用程序交互

GET/POST提交方法

  - 浏览器向Web服务器发送HTTP请求 

  - 用户在网页上点击一个超连接

  - 用户提交在网页上填写好的表单 

  - 用户在浏览器地址栏中输入URL地址并回车  

  - 默认情况下都是使用HTTP协议的GET方法提交请求

  - 使用不同的HTTP请求定制浏览器行为

GET/POST提交方法区别

特征

GET方法

POST方法

提交数据类型

文本

文本、二进制文本

提交数据长度

不超过255个字符

没有限制

提交数据可见性

作为URL地址的一部分显示在浏览器地址栏

作为请求的消息体,不可见

提交数据缓存

缓存在浏览器URL历史状态中

不会被浏览器缓存

  - 请求一个静态页面或图形文件时使用GET方法,因为仅仅需要发送文件名;

  - 发送大数据的时候,使用POST方法;

  - 上传文件时,使用POST方法;

  - 发送用户名、密码或其他保密信息的时候使用POST方

HTTP请求方法与HttpServlet方法对应关系

HTTP请求方法类型

HttpServlet处理方法

GET

doGet()

HEAD

doHead()

POST

doPost()

PUT

doPut()

DELETE

doDelete()

OPTIONS

doOptions()

TRACE

doTrace()

 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //your code
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //your code
}

  根据生命周期,这些方法的调用过程

    - 容器调用service(ServletRequest,ServletResponse)方法;

    - service(ServletRequest,ServletResponse)该方法再调用同一个Servlet类中的service(ServletRequest,ServletResponse)方法。

    - service(ServletRequest,ServletResponse)方法将分析HTTP请求,找到请求方法类型然后调用相应的处理方法

提示:如果在自定义的Servlet类中覆盖service方法,doXXX方法将不会自动调用。在绝大多数的情况下,我们只需要关心GET和POST方法就行了。

获取HTTP协议请求行

  - getMethod():获取HTTP的请求方法,例如GET、POST等

  - getRequestURI():获取请求的URI资源

- getRequestURL():获取请求的URL,包含协议名、服务器名或IP、端口号和请求资源但不包括查询字符串参数

- getQueryString():获取请求URL后面的查询字符串

- getProtocol():获取HTTP的协议名和版本号

- getContextPath():获取请求URI资源的上下文路径

- getServletPath():获取Servlet的映射路径

package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Test
 */
public class Test extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        System.err.println("请求的方法:" + request.getMethod());
        System.err.println("请求的URL:" + request.getRequestURI());
        System.err.println("请求的URL:" + request.getRequestURL());
        System.err.println("请求的查询方法:" + request.getQueryString());
        System.err.println("请求的协议:" + request.getProtocol());
        System.err.println("请求的上下文:" + request.getContextPath());
        System.err.println("请求的Servlet的映射路径:" + request.getServletPath());
    }
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

HttpServletRequest访问HTTP请求行

获取HTTP协议请求头 

  HTTP请求头用于告诉服务器客户端使用什么软件以及客户端想要服务器如何返回请求的信息

  HttpServletRequest对象的如下方法访问 

    - getHeader(name):返回指定的请求头的值 

    - getHeaders(name) :返回一个Enumeration(枚举)包含请求头中的所有值 

- getHeaderNames():特定请求中接受到的所有请求头的名称 

- getIntHeader(name):获取特定请求头的值,并将其转化为int类型

- getDateHeader(name):获取特定请求头的值,并将其转化为Date类型 

获取所有请求头

package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Test
 */
public class Test extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        @SuppressWarnings("rawtypes")
        Enumeration $enum = request.getHeaderNames();
        //通过遍历取出请求头信息并打印
        while ($enum.hasMoreElements()) {
            String headerName = (String) $enum.nextElement();
           String headerValue = request.getHeader(headerName);
           System.out.println(headerName+":"+headerValue);
        }
    }
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

返回浏览器发送的所有请求头

检索浏览器

//获取请求头信息
String userAgent = request.getHeader("User-Agent");
// 判断正在使用的浏览器
if((userAgent != null) && (userAgent.indexOf("MSIE")!=-1) ){
  // 您正在使用MicroSoft IE浏览器
}else if((userAgent != null) && (userAgent.indexOf("Firefox")!=-1)){
  // 您正在使用FireFox火狐浏览器
}

获取请求消息体 

  - 消息体可以是普通文本也可以是二进制数据 

  - HttpServletRequest对象可以使用通用的方法来获取表单数据 

获取表单数据

HttpServletRequest对象用下列方法以访问请求参数

- getParameter(parameterName):获取表单参数的值,参数名区分大小写,与HTML表单中出现的参数名一致,GET请求还是POST请求都可以采用相同的方式 

- getParameterValues(parameterName):获取同一个参数名的多个参数值,返回字符串数组对象 

- getParameterNames():以Enumeration (枚举)的方式返回请求中所有的表单参数名列表

<--HTML文件--!>
<
form action="Register" method="post"> 用户名:<input type="text" name="userName" /> <br/> 密码:<input type="password" name="passWord" /> <br/> 学历:<select name="education"> <option>小学</option> <option>初中</option> <option>高中</option> <option>大专</option> <option>本科</option> </select> <br/> 性别:<input type="radio" name="gender" id="man" checked="checked" value="男"/> <label for="man"></label> <input type="radio" name="gender" id="woman" value="女"/> <label for="woman"></label> <br/> 爱好:<input type="checkbox" name="hobby" id="PE" value="体育"/> <label for="PE">体育</label> <input type="checkbox" name="hobby" id="art" value="美术"/> <label for="art">美术</label> <input type="checkbox" name="hobby" id="music" value="音乐"/> <label for="music">音乐</label> <br/> <button>提交</button> </form>


表单提交信息

//Java代码,提交是post,所以该代码重写doPost()方法
//
设置字符编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //获取表单信息 String userName = request.getParameter("userName"); String passWord = request.getParameter("passWord"); String education = request.getParameter("education"); String gender = request.getParameter("gender"); String[] hobbys = request.getParameterValues("hobby"); //打印获取的信息 System.err.println("userName:"+userName); System.err.println("passWord:"+passWord); System.err.println("education:"+education); System.err.println("gender:"+gender); System.err.print("hobby:"); if(hobbys!=null){ for(String hobby:hobbys){ System.err.print(hobby+"/"); } }
表单信息打印结果

转载于:https://www.cnblogs.com/HackerBlog/p/5952859.html


http://www.niftyadmin.cn/n/1808717.html

相关文章

BOS物流项目笔记(12)

1、学习计划 &#xff08;1&#xff09;角色管理 添加角色功能 角色分页查询 &#xff08;2&#xff09;用户管理 添加用户功能 用户分页查询 &#xff08;3&#xff09;修改Realm中授权方法&#xff08;查询数据库&#xff09; &#xff08;4&#xff09;使用ehcache缓存…

webstorm添加vue模板支持

http://www.jianshu.com/p/142dae4f8b51 转载于:https://www.cnblogs.com/mafeng/p/6221287.html

给初学者的20个CSS实用建议

英文原文&#xff1a;20-useful-css-tips-for-beginners&#xff0c;编译&#xff1a;杨礼鑫 过去就连一个镜像站点&#xff0c;我们都依靠大量的开发人员和程序员进行维护。得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来&#xff0c;从而让一个只具备基本CSS理论的…

java 将字符编码为一个字节序列_Java 字符编码归纳总结

String newStr new String(oldStr.getBytes(), "UTF-8");java中的String类是按照unicode进行编码的&#xff0c;当使用String(byte[] bytes, String encoding)构造字符串时&#xff0c;encoding所指的是bytes中的数据是按照那种方式编码的&#xff0c;而不是最后产生…

JavaBeans wiki 摘译

20161013最新提示&#xff1a;既然来到这了&#xff0c;为什么不看看 JavaBeans 官方文档学习 &#xff1f; 鉴于Spring的beans包遵守JavaBean specs&#xff0c;有必要认真研究下JavaBean specs。 先看看wiki上是怎么说的&#xff1a; 定义 Java平台下&#xff0c;JavaBeans是…

BOS物流项目笔记(13)

1、学习计划 &#xff08;1&#xff09;Quartz概述 Quartz介绍和下载 入门案例 Quartz执行流程 cron表达式 &#xff08;2&#xff09;在BOS项目中使用Quartz创建定时任务 &#xff08;3&#xff09;在BOS项目中使用JavaMail发送邮件 &#xff08;4&#xff09;HighChar…

android的Fragment详解

Fragment要点 Fragment作为Activity界面的一部分组成出现可以在一个Activity中同时出现多个Fragment&#xff0c;并且&#xff0c;一个Fragment亦可在多个Activity中使用。在Activity运行过程中&#xff0c;可以添加、移除或者替换Fragment&#xff08;add()、remove()、replac…

寻求答案,而不是方案

早上八点按时起床&#xff0c;吃过早餐&#xff0c;去教研室工作。就这样平平常常&#xff0c;也不会觉得痛苦&#xff0c;或是压力太大。 早上骑了自行车&#xff0c;是打算邮寄礼物的。这也算是一次小小的突破&#xff0c;事实上没有我想的那么困难&#xff0c;但每次小小的突…