day07requestjspcookie笔记Word格式文档下载.docx
- 文档编号:15831749
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:168.46KB
day07requestjspcookie笔记Word格式文档下载.docx
《day07requestjspcookie笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《day07requestjspcookie笔记Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
用户给服务器发送的请求主要包含:
请求行
请求头
请求体(请求正文信息)
在多个Servlet之间进行相互的访问(Servlet之间的转发)
1.1、request获得请求行信息和ip地址
客户端(客户机)提交数据,先把数据提交给web服务器(tomcat),web服务器会把数据进行封装,数据被web服务器封装在HttpServletRequest对象中,
程序员就可以在自己的Servlet程序中使用HttpServletRequest对象获取客户端提交的所有数据。
getParameter(Stringname)获取客户端提交的数据参数name就是客户端在form表单中书写的name属性的值
getParameterMap()获取客户端提交的所有参数数据
getParameterNames()获取客户端提交的数据中的所有的key值(form表单中的所有提交的name属性的值)
getParameterValues(Stringname)获取form表单中用户提交的某个name属性对应的多个value属性值
getProtocol()获取客户端提交数据使用的协议
getRemoteAddr()获取客户端请求服务器时客户端的ip地址
getRequestDispatcher(Stringpath)用于转发
removeAttribute(Stringname)
setAttribute(Stringname,Objecto)
getAttribute(Stringname)
setCharacterEncoding(Stringenv)设置客户端提交数据解码时使用的编码表
getHeader(Stringname)获取客户端提交的请求中的头信息的value值,根据name获取
getHeaders(Stringname)根据请求中的某个key值,或者头信息中key对应的多个value值
getHeaderNames()获取客户端提交的所有的请求头中的key值
getMethod()获取客户端提交数据的方式get或post方式
getQueryString()用户提交的请求参数
getRequestURI()
getRequestURL()
1.2、request获取头信息、referer
获取客户端请求头中的信息,完成防盗链技术。
防盗链就是阻止其他的网站直接挂连接可以访问到本网站的热门资源.
publicclassRefererSevletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获取用户访问这个Servlet的头信息中是否携带了referer头信息。
Stringreferer=request.getHeader("
referer"
);
Stringip=request.getRemoteAddr();
response.setContentType("
text/html;
charset=utf-8"
//判断用户访问的时候到底有没有携带头referer头信息
if(referer==null||!
referer.startsWith("
http:
//localhost/day7"
)){
response.getWriter().write("
竟然是盗链过来的,可耻,不给看特价商品"
}else{
特价时间已到!
!
可惜你错过啦"
}
System.out.println(ip+"
............"
+referer);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
doGet(request,response);
}
1.3、request获取请求参数和乱码处理
requeset对象主要是处理用户的请求。
用户的请求参数可以通过form表单提交,可以在URL地址中使用?
key=value&
key=value的方式提交。
在request对象中就可以直接获取用户提交的这些数据。
getParameter(Stringname)
获取客户端提交数据的实验:
1、必须先创建一个html文件,使用form表单提交数据,把form表单中的method修改为post方式
2、书写Servlet程序,获取客户端提交的数据
<
body>
formaction="
/day7/get"
method="
post"
>
用户名:
<
inputtype="
text"
name="
username"
/>
br/>
密码:
password"
性别:
radio"
sex"
value="
男"
男
<
女"
女<
爱好:
checkbox"
hobby"
java"
java
<
c++"
c++
php"
PHP<
submit"
提交"
/>
/form>
/body>
/**
*获取用户提交的数据
*注意这里面有很多细节问题:
*getParameter(Stringname)这个name值必须和提交form表示中的name的属性值保持一致
*
*在获取信息客户端提交的数据时,发生了乱码问题:
*
*@author屈博
*@2014年12月18日上午10:
51:
11
*/
publicclassGetPraServletextendsHttpServlet{
//获取用户提交的数据获取用户名
Stringusername=request.getParameter("
//获取提交的密码
Stringpassword=request.getParameter("
//获取提交的性别
Stringsex=request.getParameter("
//获取提交的爱好
Stringhobby=request.getParameter("
/*
*客户端提交的数据,使用的utf-8编码,然后服务器端使用的iso-8859-1解码了,而我们Servlet程序获取到的数据
*就是服务器解码后的乱码数据。
*现在我们就需要把这些乱码的数据全部恢复到正确的数据
*现在我们就需要把乱码的数据从新编码,然后再解码
*/
//打印数据
System.out.println(encoding(username));
System.out.println(encoding(password));
System.out.println(encoding(sex));
System.out.println(encoding(hobby));
//对乱码数据进行编码
privateStringencoding(Stringvalue)throwsIOException{
byte[]bts=value.getBytes("
iso-8859-1"
value=newString(bts,"
utf-8"
returnvalue;
//可以使用request中提供固有方法对提交的数据进行编码设置
request.setCharacterEncoding("
*request.setCharacterEncoding("
*它只能对使用post提交的数据进行编码表设置,而对get方法无效。
*
*setCharacterEncoding这个方法只能对请求体中的数据进行编码表设定,而对请求行中携带的参数无效
注意:
使用request.setCharacterEncoding("
)一定要保证在获取请求数据之前。
1.4、URL编码问题
我们通过浏览器提交数据给服务器,最后我们在Servlet程序中获取用户提交的数据。
在浏览器把数据发送给服务器的时候,浏览器必然会对发送的数据进行编码,这个编码过程我们称为URL编码,而浏览器编码的过程是自动完成的。
如果我们需要手动的修改页面的编码方式,可以使用JS中的全局函数来完成。
在JS编码的时候可以指定编码表。
然后服务器端再进行解码。
1.5、request利用请求转发传递数据
回顾重定向:
演示使用Servlet程序完成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- day07requestjspcookie 笔记