Java中级(三)

HttpServletRequest:一次来自客户端的请求的相关信息
请求行
request.getMethod() 获取http请求方式
request.getRequestURI() 获取统一资源标识符
request.getRequestURL() 获取统一资源定位符
request.getQueryString() 获取查询字符串
request.getProcotol() 获取协议版本
request.getScheme() 获取协议名
请求头
request.getHeader() 获取请求头信息
request.getHeaderNames() 获取所有请求头的名字
实体内容
request.getParameter() 获取请求实体中的参数、或URL后的请求参数
request.getInputStream() 获取请求参数,当表单提交的enctype="multipart/form-data"
网络相关信息
request.getRemoteAddr() 获取客户端的IP地址
request.getRemotePort() 获取客户端的端口号
request.getLocalAddr() 获取服务器端的IP地址
request.getLocalPort() 获取服务器端的端口号

HttpServletResponse:一次发送给客户端的响应的相关信息
状态行
应答头
response.setHeader() 设置应答头
response.setContentType("text/html; charset=utf-8") 设置响应内容及字符集
响应实体
response.getWriter() 获取打印流,输出字符数据
response.getOutputStream() 获取字节输出流,输出二进制数据

一、客户端请求服务器的数据有乱码
1.get方式请求
①修改tomcat/conf/server.xml,在 标签中添加属性useBodyEncodingForURI="true"
②在获取请求数据之前,设置 request.setCharacterEncoding("utf-8");
2.post方式请求
在获取请求数据之前,设置 request.setCharacterEncoding("utf-8");

二、服务器返回给客户端的数据有乱码
response.setContentType("text/html; charset=utf-8");
请求转发
request.getRequestDispathcer("path").forward(reqeust,response);

请求转发的特点:
1.地址栏没有发生变化
2.用户只发起了一次请求
3.请求转发只能转发本服务器以内的资源
4.由于请求是同一个对象,所以可以利用该request做servlet之间数据的传输

重定向
response.sendRedirect("path")

重定向的特点:
1.地址栏会发生改变
2.用户发起了两次请求
3.重定向可以访问服务器以外的资源
4.重定向由于请求多次的,所以HttpServletRequest不是同一个对象,故不能使用它传递数据

一、分析
1.找出一个url中的项目名称
项目名称前面的"/"是服务器地址,例:http://127.0.0.1:8080/
项目名称后面的"/"是项目地址,例:http://127.0.0.1:8080/proejctname/
二、判断
1.判断一次请求行为是谁发出的
如果是浏览器行为,则表示项目名称前面的"/",即服务器地址
如果是服务器内部行为,则表示项目名称后面的"/",即项目地址

1.服务器内部行为:请求转发
2.浏览器行为:重定向、页面中form提交、页面中a标签、js中通过location.href定位一个路径

你可能感兴趣的:(Java中级(三))