请求方式Get和Post的区别

来源:互联网 发布:仓库管理java源码下载 编辑:程序博客网 时间:2024/05/21 05:24

上午学了web项目常用的两种请求方式,做一个小结。

并通过一个Servlet例子来说明两者的区别。

一、Get请求方式

1、当需要向服务器请求制定的资源时使用的方法

2、它不应该用于一些会造成副作用的操作中(在网络应用中用它来提交请求是一种常见的错误用法)
3、什么情况浏览器发送Get请求
  • — 在地址栏输入一个地址
  • — 点击链接
  • — 表单默认提交

4、Get请求方式的特点

  • 会将请求数据添加到请求资源路径的后面,所以只能提交少量的数据给Web服务器
  • 请求参数显示在浏览器地址栏上,不安全。

(这两点不明不要紧,在后面的项目中还会提到。)


二、Post请求方式

1、向服务器提交需要处理的数据,这些数据写在请求的内容里,可以导致新资源的产生和已有资源的更新。

2、什么情况浏览器发送Post请求

— 设置表单method属性为Post

3、Post 请求方式的特点

  • 请求参数添加到实体内容中,可提交大量数据
  • 不会将请求参数显示在浏览器地址栏,相对安全。

三、案例实战

1、处理POST请求中的中文参数值

步骤

step1:   新建hello1.jsp页面并增加meta标记

新建hello1.jsp页面如下所示:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>Servlet program</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--增加的meta标记,使页面支持中文  --><meta http-equiv="content-type" content="text/html;charset=utf-8"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <form action="hello1" method="post">  <!-- 此处用get不能输出中文名 -->  姓名:<input name="name"><br>  联系方式:<br>  QQ<input type="checkbox" name="contact" value="qq"/>  电话<input type="checkbox" name="contact" value="电话"/>  微信<input type="checkbox" name="contact" value="WeChat"/>  <br>  <input type="submit" value="OK">  </form>  </body></html>

Step2 : 新建Hello1Servlet.java文件

代码如下:

package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Hello1Servlet extends HttpServlet{protected void service(HttpServletRequest request,            HttpServletResponse response)            throws ServletException,IOException{//保证正确读取Post提交来的中文request.setCharacterEncoding("utf-8");//保证正确输出中文response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();//获取提交的name的值String name = request.getParameter("name");out.println("<h1>Hello,"+name+"</h1>");//获取提交的contact的值String[] contacts=request.getParameterValues("contact");if(contacts!=null){out.print("<h1>联系方式:</h1>");for(String info:contacts){out.print("<h1>"+info+"</h1>");}}out.close();}}

Step3:  修改web.xml文件

如下:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <servlet>  <servlet-name>hello1Servlet</servlet-name>  <servlet-class>web.Hello1Servlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>hello1Servlet</servlet-name>  <url-pattern>/hello1</url-pattern>  <!-- 和JSP的名字相同 -->  </servlet-mapping></web-app>

Step4:部署并访问工程


2、处理Get请求中的中文参数值

步骤

step1:   新建hello2.jsp页面并增加meta标记

新建hello2.jsp页面如下所示:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>Servlet program</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <meta http-equiv="content-type" content="text/html;charset=utf-8">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>    <body>      <form action="hello2" method="get">           姓名:<input name="name"><br>          联系方式:<br>          QQ<input type="checkbox" name="contact" value="qq"/>          电话<input type="checkbox" name="contact" value="Tel"/>          微信<input type="checkbox" name="contact" value="WeChat"/>          <br>          <input type="submit" value="OK">      </form>  </body></html>

Step2 : 新建Hello2Servlet.java文件

代码如下:

package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Hello2Servlet extends HttpServlet{    protected void service(HttpServletRequest request,            HttpServletResponse response)            throws ServletException,IOException{                //保证正确输出中文        response.setContentType("text/html;charset=utf-8");        PrintWriter out=response.getWriter();        //获取提交的name的值        String name = request.getParameter("name");        //保证正确读取get提交来的中文        name=new String(name.getBytes("iso-8859-1"),"utf-8");        out.println("<h1>Hello,"+name+"</h1>");        //获取提交的contact的值        String[] contacts=request.getParameterValues("contact");        if(contacts!=null){            out.print("<h1>联系方式:</h1>");            for(String info:contacts){                out.print("<h1>"+info+"</h1>");            }        }        out.close();    }}

Step3:  修改web.xml文件

如下:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <servlet>  <servlet-name>hello2Servlet</servlet-name>  <servlet-class>web.Hello2Servlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>hello2Servlet</servlet-name>  <url-pattern>/hello2</url-pattern>  <!-- 和JSP的名字相同 -->  </servlet-mapping></web-app>

Step4:部署并访问工程

注意看红色箭头标记的地址可看出区别。








0 0
原创粉丝点击