使用Servlet处理http请求

来源:互联网 发布:淘宝天下传媒销售底薪 编辑:程序博客网 时间:2024/06/14 01:48
作用:实现静态页面的请求展示,可以在Get方法中实现页面内容的展示;

一、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方法;
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 麦多多充不了电怎么办 一加数据线坏了怎么办 小米耳机泡水了怎么办 公司拖欠工资公司破产了怎么办 苹果x外壳掉漆怎么办 手机壳按键很硬怎么办 棉质白衣服染色怎么办 白棉t恤混洗染色怎么办 包包被衣服染色了怎么办 白色衣服染了菜汁怎么办 一加3t屏幕刺眼怎么办 怀孕吃了好多杏怎么办 门破了个洞怎么办 钢圈轮毂刮花了怎么办 瓷砖用刀子划了怎么办 陶瓷洗手台裂了怎么办 洗车泵水管坏了怎么办 印胶浆里面渗入了发泡浆怎么办? 管子断在水管里怎么办 衣服上的织带缩水怎么办 真丝衣服拔缝了怎么办 顾客说衣服太花怎么办 铝和碱反应变黑怎么办 40度高温多肉怎么办 沾到医用蓝药水怎么办? 裤子弄上泡沫胶怎么办 苍蝇纸粘衣服上怎么办 苍蝇胶沾衣服上怎么办 灯带为什么不亮怎么办 苹果6比屏幕变黄怎么办 雷腾键盘锁了怎么办 自吸泵电机不转怎么办 孕38周胎儿偏小怎么办 被火烧黑的铁怎么办 锅被烟熏黑了怎么办 墙壁被烟熏黑了怎么办 壁纸被烟熏黑了怎么办 空调被烟熏黑了怎么办 牙被烟熏黑了怎么办 尖头鞋把尖折了怎么办 腰椎固定手术钢钉断了怎么办