请求方式Get和Post的区别
2015-08-10 14:20
676 查看
上午学了web项目常用的两种请求方式,做一个小结。
并通过一个Servlet例子来说明两者的区别。
一、Get请求方式
1、当需要向服务器请求制定的资源时使用的方法
2、它不应该用于一些会造成副作用的操作中(在网络应用中用它来提交请求是一种常见的错误用法)
3、什么情况浏览器发送Get请求
— 在地址栏输入一个地址
— 点击链接
— 表单默认提交
4、Get请求方式的特点
会将请求数据添加到请求资源路径的后面,所以只能提交少量的数据给Web服务器
请求参数显示在浏览器地址栏上,不安全。
(这两点不明不要紧,在后面的项目中还会提到。)
2、什么情况浏览器发送Post请求
— 设置表单method属性为Post
3、Post 请求方式的特点
请求参数添加到实体内容中,可提交大量数据
不会将请求参数显示在浏览器地址栏,相对安全。
1、处理POST请求中的中文参数值
步骤
step1: 新建hello1.jsp页面并增加meta标记
新建hello1.jsp页面如下所示:
Step2 : 新建Hello1Servlet.java文件
代码如下:
Step3: 修改web.xml文件
如下:
Step4:部署并访问工程
2、处理Get请求中的中文参数值
步骤
step1: 新建hello2.jsp页面并增加meta标记
新建hello2.jsp页面如下所示:
Step2 : 新建Hello2Servlet.java文件
代码如下:
Step3: 修改web.xml文件
如下:
Step4:部署并访问工程
注意看红色箭头标记的地址可看出区别。
并通过一个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:部署并访问工程
注意看红色箭头标记的地址可看出区别。
相关文章推荐
- 关于借贷宝“骗钱、推广是假的、传销、恶意盗取用户信息等”谣言的澄清
- Android使用的开发MediaRecorder录制声音
- SNMP简单网络管理协议(转载)
- HDU 1231 最大连续子序列(动态规划)
- MapReduce执行流程详解
- poj2492(加权值的并查集)
- Num 28 : NYOJ : 0106 背包问题 [ 贪心 ]
- haystack论文翻译以及和TFS的对比
- CentOS安装Apache详解
- [leetcode-94]Binary Tree Inorder Traversal(c++)
- 3617POJ
- POJ-1222 EXTENDED LIGHTS OUT(高斯消元)
- CentOS 7 安装PostGIS
- Dijkstra(优先队列优化)
- ProGuard Version5.2(4.1)Manual-->Introduction
- ASP入门(三)-VBScript变量、运算符
- A Plug for UNIX
- 代码流程分析二:Settings-蓝牙分析-myDevice根preference分析
- 欢迎使用CSDN-markdown编辑器
- 题解分析及总结:经典逻辑面试题“假设有一个池塘,里面有无穷多的水,现有2个空水壶,如何使用少于15L的水,用2个水壶从池塘里取得3升水”