request对象获取参数和URL解决中文乱码问题_jsp练习

​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]+"&nbsp;&nbsp");
				}
			}
		%><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服务器即可

猜你喜欢

转载自blog.csdn.net/qq_17107171/article/details/81258534