Day07_request-response
来源:互联网 发布:杭州浪尖网络 编辑:程序博客网 时间:2024/05/22 07:03
01 Request入门
客户端向服务器发送请求时,会将所有的请求都封装在
HttpServletRequest
对象当中,那么我们就可以通过这个对象获取客户端的一些有用数据。
★02 Request对象常用API
对于POST请求,表单项不填,那么request.getParameter()返回
,返回”“空白字符串
- requeset获取客户端的信息
getRequestURL()
方法返回客户端发出请求时的完整URL
getRequestUR()I
方法返回请求行中的资源名部分
getQueryString()
方法返回请求行中的参数部分
getRemoteAddr()
方法返回发出请求的客户机的IP地址
getLocalAddr()
方法返回WEB服务器的IP地址
getMethod()
方法返回客户机请求方式
getServletPath()
方法返回Servlet映射路径
request.getContextPath()
方法返回当前web应用根目录对于GET方式,请求参数是写在请求行中
对于POST方式,请求参数是写在请求体中
表单不写mothod
,默认是GET请求。
- 获取请求头的信息
获得客户机请求头
getHeader(name)
方法 — String
getHeaderNames方法
— Enumeration
- 获得请求体的参数
getParameter(name)
—返回 String 通过name获得值getParameterValues(name)
—返回String[ ] 通过name获得多值getParameterNames
— 返回Enumeration<String>
获得所有name
★03 Request对象的应用
用户注册
★04 表单乱码的原因和解决方案
服务器的默认编码方式ISO8859-1编码,;而浏览器是UTF-8,
解决办法
1. response.setContentType("text/html;charset=UTF-8");
服务器设置浏览器的解码方式
2. request.setCharacterEncoding("UTF-8")
只能针对post请求。直接设置请求的编码
3.
//读取进来就就是被ISO编码了。现在我们需要继续把它编码成为二进制文件,然后用UTF-8去解码 byte[] buf = username.getBytes("ISO8859-1"); username = new String(buf,"UTF-8");
★05 Request域对象
request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。
个人理解就是生存在服务器端的一个对象。这样我们既可以在服务器端传递数据,而浏览器端的地址不会改变
request.setAttribute("NAME", username);
设置域对象属性
getAttribute("NAME")
获取对应的值
removeAttribute("NAME")
移除对应的域对象。
//把这个页面重新转发到其他servlet中,这里的"/"代表程序的跟目录 request.getRequestDispatcher("/Demo02B").forward(request, response);
★06 转发的细节
如上
07 练习:用户注册
08 Response入门
web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。用于服务器将数据发送到客户端。`HttpServletResponse`
★09 Response对象常用的API
response.setContentType("text/html;charset=UTF-8");
两层含义:一层是让服务器按照UTF-8编码。一层是让浏览器按照UTF-8的方式解码。
当你想输出中文字符串时,可以采用字符或者字节的方式
字符
response.getWriter()
字节
response.getOutputStream()
★10 Response对象的应用
- 文件下载。
//设置浏览器响应方式。下载 response.setHeader("content-disposition","attachment;filename="+fileName);<a href="/Day07_itcaset_request-response/Demo03">下载</a>// "/"就是服务器webapps的根目录,Demo03是存在WEB-INF目录下面,但是浏览器是无法访问这个目录的。/Demo03是我们在web.xml目录下配置的映射目录
验证码(设置浏览器不缓存)
response.setDateHeader("expires",-1);response.setHeader("cache-control","no-cache");response.setHeader("pragma","no-cache");
★11 Response向浏览器输出中文乱码的原因和解决方案
response.setContentType("text/html;charset=UTF-8");
★12 重定向的细节
在重定向的情况下,原来的`request`的域对象不能用了。我们用servletContext域对象替代。
servletContext
域对象在部署的时候就创建了。 所以我们在
//由Demo09A重定向到Demo09B中,这里的/表示webapps目录response.sendRedirect(request.getContextPath()+"/Demo09B");
★13 RequestDispatcher对象常用的API
在第5条我已经做了简述
### 14 练习:用户登录和JS验证登录表单
老师的08练习问题。
在得到验证码图片的时候可以通过javaScript
的开动态改变img标签的src属性。
function shuaxin() { document.getElementById("imgID").src = "/Day07_itcaset_request-response/Demo04?" + new Date().getTime(); }
- Day07_request-response
- Response
- response
- response
- response
- Response
- response
- response
- response
- response
- response
- response
- @Response
- Response
- response
- response
- response
- response
- C - The C Answer (2nd Edition) - Exercise 1-18
- Centos7安装图形界面
- Linux下文件共享设置
- 自定义控件(二)自定义Dialog
- Android studio导入Eclipse项目,和一些错误的解决
- Day07_request-response
- linux c++循环缓冲区模板类
- regmap模块
- java生成验证码代码
- django 1.8 官方文档翻译: 3-6-1 中间件概览
- hdu 5296 - Annoying problem(2015 Multi-University Training Contest 1 )LCA
- 颜色直方图特征代码
- std::list与std::deque用法
- windows下安装配置solr