您的位置:首页 > 其它

请求方式Get和Post的区别

2015-08-10 14:20 676 查看
上午学了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:部署并访问工程



注意看红色箭头标记的地址可看出区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: