request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户需求,然后做出响应.它是HttpServletRequest类的实例.request对象具体有请求域,即完成客户端的请求之前,该对象一直有效.常用方法如下:
String getParameter(String name)返回name制定参数的参数值
String[] getParameterValues(String name)返回包括参数name的所有值得数组
void setAttribute(String,Object);存储这个请求中的属性值
String getContentType()得到请求体的MIME类型
String getProtocol()返回请求体的MIME类型
String getServerName()返回接受请求的服务器主机名
补充:------------------------------------------------------------------------------------------------------------------------------------------------------------------
请求重定向:服务器行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变
请求转发:服务器行为request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变
1.建立一个注册页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- get明文提交 -->
<h1>注册</h1>
<hr>
<form action="request.jsp" name="regForm" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="passworld" name="passworld"></td>
</tr>
<tr>
<td>爱好</td>
<td>
<input type="checkbox" name="favorite" value="read"/>读书
<input type="checkbox" name="favorite" value="music"/>音乐
<input type="checkbox" name="favorite" value="movie"/>电影
<input type="checkbox" name="favorite" value="Internet"/>上网
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
<br>
<hr>
<br>
<a href="request.jsp?username=横楠&passworld=lisi">测试URL传参数</a>
</body>
</html>
2.建立一个获取用户注册信息的页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>request内置对象</h1>
<%
request.setCharacterEncoding("UTF-8"); //解决中文乱码问题,不能解决URL传参问题。解决URL中文传参乱码问题,必须修改tomcat服务器
request.setAttribute("passworld", "123456"); //密码1,主要学习attribute
%><br>
用户名:<%=request.getParameter("username") %><br>
密码:<%=request.getParameter("passworld") %><br>
爱好:<%
if(request.getParameterValues("favorite")!=null)
{
String[] favorites = request.getParameterValues("favorite");
for(int i=0;i<favorites.length;i++){
out.print(favorites[i]+"  ");
}
}
%><br>
密码1:<%=request.getAttribute("passworld") %><br> <!--密码1,主要学习attribute -->
请求获得MIME类型:<%=request.getContentType() %><br>
协议类型及版本号<%=request.getProtocol() %><br>
服务器主机名:<%=request.getServerName() %><br>
服务器端口号:<%=request.getServerPort() %><br>
文件的长度:<%=request.getContentLength() %><br>
请求客户端的IP地址:<%=request.getRemoteAddr() %><br>
请求的真实路径:<%=request.getRealPath("request.jsp") %><br>
请求的上下文路径:<%=request.getContextPath() %><br>
</body>
</html>
效果图展示
3.解决中文乱码问题
①表单提交,不光在注册代码中使用UTF-8,接收页面也必须使用UTF-8,接收代码中这一部分就解决的表单提交中文乱码问题。
request.setCharacterEncoding("UTF-8");//解决中文乱码问题,不能解决URL传参问题。解决URL中文传参乱码问题,必须修改tomcat服务器
②URL提交解决中文乱码问题得修改Tomcat服务器,
1)在Tomcat中找到server.xml
2)在下图位置添加代码
URLEncoding="utf-8"
3)重新启动Tomcat服务器即可