使用Servlet处理http请求
2016-12-20 22:43
281 查看
作用:实现静态页面的请求展示,可以在Get方法中实现页面内容的展示;
一、http请求包含:
请求行:http方法、请求的url、http版本
请求方式:GET主要是请求获取数据;
1、地址栏直接输入服务器资源,默认是get提交; 2、通过js直接访问是get提交 3、超链接访问:
Post是请求上传资源:在表单中直接上传内容为post提交;主要用于传输数据使用可以发送文本数据及二进制数据;
GET与Post的区别:
使用场景:
1、GET方法:请求一个静态页面或者图形文件时使用GET方法,因为仅仅需要发送文件名
2、Post方法:发送大数据、上传文件时、发送用户名、密码或其他保密信息的时候;
【补充内容】:
get提交的中文都不能被解析,需要手动调成中文:String newName = new
request.setCharacterEncoding("utf-8");
String name = request.getParameter("username");
//get提交中文默认乱码,需要自己处理编码集
String newName = new String(name.getBytes("ISO8859-1"),"UTF-8");
设置在thml中:<form name="username" method="Get"></form>在密码中设置name=“pwd”;
二、httpServiceRequest对象封装了http传送的请求行的全部内容;
//获取客户端请求的方法:
String method = request.getMethod();
//获取到请求的地址:
request.getRequestURL().toString(); 统一资源定位符(实实在在找到文件的全路径)
request.getRequestURI(); 统一资源标识符
//获取到请求附带的参数:
request.getQueryString();
//获取客户端的ip,端口;
request.getRemoteAddr();
//获取服务器的内容;
request.getLocationPort();
三、获取到请求头的方法:
//request.getHeader(name):返回指定的请求头的值
//获取到所有的请求头,返回枚举类型Enumeration;
Enumeration num = request.getHeaderNames();
while(num.hasMoreElements()){
String s = (String) num.nextElement();
System.out.print("请求头:"+s);
System.out.println("值:"+request.getHeader(s));
}
//返回一个日期类型
//request.getDateHeader(arg0)
四、获取消息体的内容:
[细节]:1/在设置的html的对应标签的属性设置name=“”;
2/设置请求的编码集,request.setCharacterEncoding("UTF-8");
3、显示的是value(),如果没有value,直接显示文本内容;没有文本内容显示on表示选中
【总结:select比较方便、单选框,复选框最好设置value值】;
request.getParameter("pwd");
//获取复选框选中内容:
在checkbox中获取客户端传递的多个数据换个方法:request.getParameterValues("like");
//
五、请求派发/内部派发:每个客户请求可以传递给很多Servlet以及Web应用程序中的其它资源
特点:1、整个过程完全是在服务端完成
2、不需要任何客户端浏览器的行为
3、不需要客户端浏览器和服务器端之间传递特殊信息;
4、通过javax.servlet.RequestDispatcher对象实现;
与重定向区别:
1、请求派发状态码是307 重定向是302;
2、请求派发是在服务器端完成的,不影响客户端;地址栏是不会变化的, 重定向是客户端来完成;
3、请求派发只能在本服务器完成; 重定向可以访问其他服务器的资源;
4、请求派发对服务器处理有压力 重定向:对服务器好,但是处理速度慢;
请求派发跳转后将客户端响应控制权交给下一资源 重定向则会;
代码实现:
RequestDispatcher rd = request.getRequestDispatcher("students");
rd.include(request, response);
//请求直接跳转网页:
RequestDispatcher rd = request.getRequestDispatcher("html/success.html");
//将请求往后面的网页传递,并且实现网页跳转,将客户端响应权传递下去;
rd.forward(request, respone);
//将资源控制权占时移交给跳转方,等其执行完又将控制权回收回来;
rd.include(request, respone);
内部派发细节:
重定向:只要是从客户端访问过来的只能达到Webapps,都必须要加上项目名字;(js提交,超链接提交,重定向都要加上项目名字)
// response.sendRedirect("/JavaWeb_01/students");
内部派发里面的/表示工程项目名,请求派发默认调用doPost方法;而不是doGet方法;
一、http请求包含:
请求行:http方法、请求的url、http版本
请求方式:GET主要是请求获取数据;
1、地址栏直接输入服务器资源,默认是get提交; 2、通过js直接访问是get提交 3、超链接访问:
Post是请求上传资源:在表单中直接上传内容为post提交;主要用于传输数据使用可以发送文本数据及二进制数据;
GET与Post的区别:
特征 | GET方法 | POST方法 |
提交数据类型 | 文本 | 文本,二进制文本 |
提交数据长度 | 不超过255个字符 | 没有限制 |
提交数据可见性 | 作为URL地址一部分,显示在浏览器地址栏 | 作为请求的消息体,不可见 |
提交数据缓存 | 婚存在浏览器URL历史状态中 | 不会被浏览器缓存 |
1、GET方法:请求一个静态页面或者图形文件时使用GET方法,因为仅仅需要发送文件名
2、Post方法:发送大数据、上传文件时、发送用户名、密码或其他保密信息的时候;
【补充内容】:
get提交的中文都不能被解析,需要手动调成中文:String newName = new
request.setCharacterEncoding("utf-8");
String name = request.getParameter("username");
//get提交中文默认乱码,需要自己处理编码集
String newName = new String(name.getBytes("ISO8859-1"),"UTF-8");
设置在thml中:<form name="username" method="Get"></form>在密码中设置name=“pwd”;
二、httpServiceRequest对象封装了http传送的请求行的全部内容;
//获取客户端请求的方法:
String method = request.getMethod();
//获取到请求的地址:
request.getRequestURL().toString(); 统一资源定位符(实实在在找到文件的全路径)
request.getRequestURI(); 统一资源标识符
//获取到请求附带的参数:
request.getQueryString();
//获取客户端的ip,端口;
request.getRemoteAddr();
//获取服务器的内容;
request.getLocationPort();
三、获取到请求头的方法:
//request.getHeader(name):返回指定的请求头的值
//获取到所有的请求头,返回枚举类型Enumeration;
Enumeration num = request.getHeaderNames();
while(num.hasMoreElements()){
String s = (String) num.nextElement();
System.out.print("请求头:"+s);
System.out.println("值:"+request.getHeader(s));
}
//返回一个日期类型
//request.getDateHeader(arg0)
四、获取消息体的内容:
[细节]:1/在设置的html的对应标签的属性设置name=“”;
2/设置请求的编码集,request.setCharacterEncoding("UTF-8");
3、显示的是value(),如果没有value,直接显示文本内容;没有文本内容显示on表示选中
【总结:select比较方便、单选框,复选框最好设置value值】;
request.getParameter("pwd");
//获取复选框选中内容:
在checkbox中获取客户端传递的多个数据换个方法:request.getParameterValues("like");
//
五、请求派发/内部派发:每个客户请求可以传递给很多Servlet以及Web应用程序中的其它资源
特点:1、整个过程完全是在服务端完成
2、不需要任何客户端浏览器的行为
3、不需要客户端浏览器和服务器端之间传递特殊信息;
4、通过javax.servlet.RequestDispatcher对象实现;
与重定向区别:
1、请求派发状态码是307 重定向是302;
2、请求派发是在服务器端完成的,不影响客户端;地址栏是不会变化的, 重定向是客户端来完成;
3、请求派发只能在本服务器完成; 重定向可以访问其他服务器的资源;
4、请求派发对服务器处理有压力 重定向:对服务器好,但是处理速度慢;
请求派发跳转后将客户端响应控制权交给下一资源 重定向则会;
代码实现:
RequestDispatcher rd = request.getRequestDispatcher("students");
rd.include(request, response);
//请求直接跳转网页:
RequestDispatcher rd = request.getRequestDispatcher("html/success.html");
//将请求往后面的网页传递,并且实现网页跳转,将客户端响应权传递下去;
rd.forward(request, respone);
//将资源控制权占时移交给跳转方,等其执行完又将控制权回收回来;
rd.include(request, respone);
内部派发细节:
重定向:只要是从客户端访问过来的只能达到Webapps,都必须要加上项目名字;(js提交,超链接提交,重定向都要加上项目名字)
// response.sendRedirect("/JavaWeb_01/students");
内部派发里面的/表示工程项目名,请求派发默认调用doPost方法;而不是doGet方法;
相关文章推荐
- 使用servlet处理http请求
- 使用servlet处理HTTP请求
- 第四章 使用Servlet处理HTTP请求
- 使用servlet处理http请求
- 使用Servlet处理HTTP请求
- 使用Servlet处理HTTP请求
- 使用Servlet处理HTTP请求
- 使用servlet处理http请求
- 使用Servlet处理HTTP请求
- 使用Servlet处理HTTP请求
- 使用MULE接收并处理HTTP请求
- 使用servlet处理HTTP响应
- HTTP头部详解及使用Java套接字处理HTTP请求
- 关于servlet处理http请求和响应原理的前序和思考
- 使用URLConnection处理http请求
- Servlet学习笔记(五)-----使用Servlet处理用户注册和登陆(使用了Cookie)
- [Jweb] 数据库处理以及在 Servlet 中使用 Bean
- Servlet处理Http请求的执行过程(Servlet核心流程)
- Servlet学习笔记(四)-----使用Servlet处理用户注册和登陆
- Servlet第二章知识点总结——使用 Servlet处理表单