severlet get post 请求 响应
来源:互联网 发布:gopro软件中文版 编辑:程序博客网 时间:2024/06/05 11:11
请求方式相关内容
请求: 从客户端向服务器端发送数据.
常见的请求方式: get post
常见的get请求: 表单的get提交 和 超链接 ,直接访问
当服务器接收到get请求时,调用Servlet类中的doGet().
1. get请求特点:
1.get请求会根据"标签name=值"格式,将所有数据填充到地址栏中.
2.get请求通过url地址传递数据,url地址后的数据不能大于1kb.
缺点:
不安全
常见的post请求: 表单的post提交.
当服务器接收到get请求时,调用Servlet类中的doPost().
2.post请求特点:
1.post请求不会将传递服务器的数据填充到地址栏
2.post请求实质是通过请求实体传递数据,理论上传递数据的大小不受限制.
3.get请求和post请求:
1.get请求会将请求数据填充到地址栏--不安全. post请求不会将请求数据填充到地址栏--安全
2.get请求通过URL传递数据,数据不能大于1kb. post请求通过请求实体传递数据,数据大小不限
3.当有个请求时,get请求会迅速处理,不会形成请求队列. post请求有可能形成请求队列.
4. URL传参格式: ..../项目名/资源名?参数名1=值1&参数名2=值&...
注意: 整个路径中不能含有多余的符号,比如空格.
======================================================================================
URL的完整格式
scheme://host.domain:port/path/filename
网络协议:IP地址(虚拟地址):端口号/路径;参数?查询数据#锚点
<scheme>: 网络协议
http协议 80端口
pop3协议--用于邮件
ftp协议:文件上传,下载
https 443端口 加密传输的HTTP
@<host>主机地址(IP地址)
<port> 端口号
<path > 路径
绝对路径 从根目录开始找
相对路径 相对于当前文件开始找
;<params>--查询参数
涉及到了cookie
?<query>--请求数据
#<frag> --锚点
---------------------------------
请求方式在severlet中的实现
1.客户端请求服务器
a.客户端输入网址
http://127.0.0.1:8080/myWeb/html/MyHtml.html(这是我的网址)
访问页面后,提交
<form action="../enter" method="post">
使用POST方式提交
1. webRoot/enter 是虚拟路径,(如果找不见)
进到xml中来--->找到类全名--->Myseverlet.java(调用dopost()方法)
2.../enter (出html包 找到webRoot/enter 可是没有enter )
/enter 绝对路径好像是不可以的(webRoot就是/,就是根目录)---为毛??
b.服务器响应客户端
发生在找到severlet类包之后
响应: 服务器向客户端传递数据
响应方式:
转发
概念:
由Web组件1 将 request和response对象 传递给 下一个Web组件(通过下一个web组件响应)
整个过程在服务器端进行,使用post方式,不影响 location
过程:
浏览器---请求A--->组件1: 处理/不处理 ---请求A--->组件2:
处理/不处理----请求A---->组件3....---响应-->浏览器
代码:
请求对象.getRequestDispatcher("组件路径").forward(请求对象, 响应对象);
重定向
概念;
由Web组件1(返回响应)更改浏览器的地址栏,并向转向新路径.[告诉浏览器,访问新的Web组件/页面]
你改人家地址栏,写了另一个组件地址()---->肯定变成了get方式了
所以,在服务器端使用doGET()方法处理
过程:
浏览器---请求A--->组件1: 处理/不处理----更改浏览器地址栏--->浏览器请求新路径
代码:
响应对象.sendRedirect("新路径");
--------------------------------------------
Myseverlet核心代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost");
String name=request.getParameter("name");//获得请求对象中的指定参数的值
String password=request.getParameter("password");//获得请求对象中的指定参数的值
System.out.println("账号: "+name+" 密码:"+password); //在服务器端打印出客户端请求的的账号,密码
if (name.equals("tom") && password.equals("123456")) {//成功,字符串比较不可以使用"=="
//转发: SuccessServlet
request.getRequestDispatcher("SuccessServlet").forward(request, response);
} else {//失败,转到FailureServlet.java文件,执行相关操作(这是一个路径吧)
//重定向: FailureServlet
response.sendRedirect("FailureServlet");
}
}
//初始化
public void init() throws ServletException {
System.out.println("初始化...");
}
}
SuccessServlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
/* text/html;charset=UTF-8这一句修改编码,对中文解析很重要 */
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<h1>恭喜您登陆成功!</h1>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
FailureServlet代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
/* 修改HTML文件编码 */
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("对比起,登陆失败!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
---------------------------------------------
关于请求和响应数据的编码问题:
项目编码与网页编码必须一致,数据库编码可以与项目不一致.
中文编码:gbk,gb2312,utf-8
mysql: gbk
网页: UTF-8
项目/工作区: UTF-8
编码处理技巧:
请求数据的编码格式比较特殊:
1.处理POST请求中数据:
request.setCharacterEncoding("UTF-8");//设置请求对象中数据的编码格式
response.setCharacterEncoding("UTF-8");//设置响应数据的编码格式
2.处理GET请求中数据:
String name=request.getParameter("name");//获得请求对象中的指定参数的值
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
响应数据的编码控制:
1.控制(由服务器生成的网页)生成网页的编码
response.setContentType("text/html;charset=UTF-8");
2.设置响应数据的编码格式
response.setCharacterEncoding("UTF-8");
-------------------------------
代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//设置响应数据的编码格式
System.out.println("doGet....");
String uname=request.getParameter("uname");//获得请求对象中的指定参数的值
//设置请求函数的编码--记下就好
uname=new String(uname.getBytes("ISO-8859-1"),"UTF-8");
String pwd=request.getParameter("pwd");//获得请求对象中的指定参数的值
System.out.println("账号: "+uname+" 密码:"+pwd);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//一问一答(一次查询,不可以回复多个响应,因此之前的删了)
//设置请求对象中数据的编码格式
request.setCharacterEncoding("UTF-8");
//设置响应数据的编码格式
response.setCharacterEncoding("UTF-8");
String uname=request.getParameter("uname");//获得请求对象中的指定参数的值
String pwd=request.getParameter("pwd");//获得请求对象中的指定参数的值
System.out.println("账号: "+uname+" 密码:"+pwd);
System.out.println("doPOST 函数");
}
请求: 从客户端向服务器端发送数据.
常见的请求方式: get post
常见的get请求: 表单的get提交 和 超链接 ,直接访问
当服务器接收到get请求时,调用Servlet类中的doGet().
1. get请求特点:
1.get请求会根据"标签name=值"格式,将所有数据填充到地址栏中.
2.get请求通过url地址传递数据,url地址后的数据不能大于1kb.
缺点:
不安全
常见的post请求: 表单的post提交.
当服务器接收到get请求时,调用Servlet类中的doPost().
2.post请求特点:
1.post请求不会将传递服务器的数据填充到地址栏
2.post请求实质是通过请求实体传递数据,理论上传递数据的大小不受限制.
3.get请求和post请求:
1.get请求会将请求数据填充到地址栏--不安全. post请求不会将请求数据填充到地址栏--安全
2.get请求通过URL传递数据,数据不能大于1kb. post请求通过请求实体传递数据,数据大小不限
3.当有个请求时,get请求会迅速处理,不会形成请求队列. post请求有可能形成请求队列.
4. URL传参格式: ..../项目名/资源名?参数名1=值1&参数名2=值&...
注意: 整个路径中不能含有多余的符号,比如空格.
======================================================================================
URL的完整格式
scheme://host.domain:port/path/filename
网络协议:IP地址(虚拟地址):端口号/路径;参数?查询数据#锚点
<scheme>: 网络协议
http协议 80端口
pop3协议--用于邮件
ftp协议:文件上传,下载
https 443端口 加密传输的HTTP
@<host>主机地址(IP地址)
<port> 端口号
<path > 路径
绝对路径 从根目录开始找
相对路径 相对于当前文件开始找
;<params>--查询参数
涉及到了cookie
?<query>--请求数据
#<frag> --锚点
---------------------------------
请求方式在severlet中的实现
1.客户端请求服务器
a.客户端输入网址
http://127.0.0.1:8080/myWeb/html/MyHtml.html(这是我的网址)
访问页面后,提交
<form action="../enter" method="post">
使用POST方式提交
1. webRoot/enter 是虚拟路径,(如果找不见)
进到xml中来--->找到类全名--->Myseverlet.java(调用dopost()方法)
2.../enter (出html包 找到webRoot/enter 可是没有enter )
/enter 绝对路径好像是不可以的(webRoot就是/,就是根目录)---为毛??
b.服务器响应客户端
发生在找到severlet类包之后
响应: 服务器向客户端传递数据
响应方式:
转发
概念:
由Web组件1 将 request和response对象 传递给 下一个Web组件(通过下一个web组件响应)
整个过程在服务器端进行,使用post方式,不影响 location
过程:
浏览器---请求A--->组件1: 处理/不处理 ---请求A--->组件2:
处理/不处理----请求A---->组件3....---响应-->浏览器
代码:
请求对象.getRequestDispatcher("组件路径").forward(请求对象, 响应对象);
重定向
概念;
由Web组件1(返回响应)更改浏览器的地址栏,并向转向新路径.[告诉浏览器,访问新的Web组件/页面]
你改人家地址栏,写了另一个组件地址()---->肯定变成了get方式了
所以,在服务器端使用doGET()方法处理
过程:
浏览器---请求A--->组件1: 处理/不处理----更改浏览器地址栏--->浏览器请求新路径
代码:
响应对象.sendRedirect("新路径");
--------------------------------------------
Myseverlet核心代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost");
String name=request.getParameter("name");//获得请求对象中的指定参数的值
String password=request.getParameter("password");//获得请求对象中的指定参数的值
System.out.println("账号: "+name+" 密码:"+password); //在服务器端打印出客户端请求的的账号,密码
if (name.equals("tom") && password.equals("123456")) {//成功,字符串比较不可以使用"=="
//转发: SuccessServlet
request.getRequestDispatcher("SuccessServlet").forward(request, response);
} else {//失败,转到FailureServlet.java文件,执行相关操作(这是一个路径吧)
//重定向: FailureServlet
response.sendRedirect("FailureServlet");
}
}
//初始化
public void init() throws ServletException {
System.out.println("初始化...");
}
}
SuccessServlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
/* text/html;charset=UTF-8这一句修改编码,对中文解析很重要 */
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<h1>恭喜您登陆成功!</h1>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
FailureServlet代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
/* 修改HTML文件编码 */
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("对比起,登陆失败!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
---------------------------------------------
关于请求和响应数据的编码问题:
项目编码与网页编码必须一致,数据库编码可以与项目不一致.
中文编码:gbk,gb2312,utf-8
mysql: gbk
网页: UTF-8
项目/工作区: UTF-8
编码处理技巧:
请求数据的编码格式比较特殊:
1.处理POST请求中数据:
request.setCharacterEncoding("UTF-8");//设置请求对象中数据的编码格式
response.setCharacterEncoding("UTF-8");//设置响应数据的编码格式
2.处理GET请求中数据:
String name=request.getParameter("name");//获得请求对象中的指定参数的值
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
响应数据的编码控制:
1.控制(由服务器生成的网页)生成网页的编码
response.setContentType("text/html;charset=UTF-8");
2.设置响应数据的编码格式
response.setCharacterEncoding("UTF-8");
-------------------------------
代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//设置响应数据的编码格式
System.out.println("doGet....");
String uname=request.getParameter("uname");//获得请求对象中的指定参数的值
//设置请求函数的编码--记下就好
uname=new String(uname.getBytes("ISO-8859-1"),"UTF-8");
String pwd=request.getParameter("pwd");//获得请求对象中的指定参数的值
System.out.println("账号: "+uname+" 密码:"+pwd);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//一问一答(一次查询,不可以回复多个响应,因此之前的删了)
//设置请求对象中数据的编码格式
request.setCharacterEncoding("UTF-8");
//设置响应数据的编码格式
response.setCharacterEncoding("UTF-8");
String uname=request.getParameter("uname");//获得请求对象中的指定参数的值
String pwd=request.getParameter("pwd");//获得请求对象中的指定参数的值
System.out.println("账号: "+uname+" 密码:"+pwd);
System.out.println("doPOST 函数");
}
阅读全文
0 0
- severlet get post 请求 响应
- Ajax的get/post请求服务器响应
- HTTP请求&响应、POST与GET
- HTTP请求与响应-get和post
- http请求(get 和 post 请求)与响应
- spring mvc 响应处理post请求和get请求 测试
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- [转载]HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- SpringBoot学习之整合Redis(jedis版)
- bzoj1297 [SCOI2009]迷路(矩阵优化)
- python中List添加、删除元素的几种方法
- 类的几个关键字
- 大整数乘法
- severlet get post 请求 响应
- Android之单方向滑动的Viewpager
- TypeError: unhashable type: 'matrix'解决方法
- 第5周项目3-括号的匹配
- n个人中每m个出队一次
- 用户 角色 权限 菜单
- LeetCode:Palindrome Number
- iOS 快捷键~新文件、编辑、调试
- commons-logging的使用