JavaWeb笔记6-使用request对象实现注册实例,请求方式的编码问题

使用request对象实现注册实例

注册页
register.jsp
显示页
show.jsp

流程:
1、完成登录页面,用于接收用户输入信息
2、登录成功页面(show.jsp),首先设置编码,再读取用户输入的信息用于显示。
代码如下:
a、request.jsp(登录页面)

<%@ 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>
	<form action="show.jsp" method="get">
	   用户名:<input type="text" name="uname"/><br>
	   
	   密码:<input type="password" name="upwd"/><br>
	   
	   年龄:<input type="text" name="uage"/><br>
	   
	   <!-- 多选框按钮是根据name属性值决定value属性值,最终传到服务端的是value属性值 -->
	   爱好:<br/>
	     足球<input type="checkbox" name="uhobbies" value="足球"/>
	     蓝球<input type="checkbox" name="uhobbies" value="篮球"/>
	     羽毛球<input type="checkbox" name="uhobbies" value="羽毛球"/>
	     乒乓球<input type="checkbox" name="uhobbies" value="乒乓球"/>
	     游泳<input type="checkbox" name="uhobbies" value="游泳"/><br/>
	     
	   <input type="submit" value="注册">
	</form>
</body>
</html>

b、show.jsp(显示页面)

<%@ 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>
	<%
		//统一编码
		request.setCharacterEncoding("utf-8");  
	    //用户名和密码返回值为字符串数据
	    String name=request.getParameter("uname");  
	//    name=new String(name.getBytes("iso-8859-1"),"utf-8");
	    String pwd=request.getParameter("upwd");
	    //将年龄返回值强制转换为整形
	    int age=Integer.parseInt( request.getParameter("uage"));  
	    
	    String[] hobbies=request.getParameterValues("uhobbies");
	%>
	注册成功,信息如下:<br/>
	姓名:<%=name %><br/>
	年龄:<%=age %><br/>
	密码:<%=pwd %><br/>
	爱好:<br/>
	<%
		//排除空集情况
		if(hobbies!=null){
			for(String hobby:hobbies)
			{
				//&nbsp是打印空格
				out.print(hobby+"&nbsp;");
			}
		}
	%>
</body>
</html>

问题:在上述的情况下,只要有show.jsp的网页目录,不需要经过register.jsp登录也能直接转入显示页面

method=“get”、“地址栏”请求方式、超链接默认都属于get提交方式
地址栏方式
例:http://localhost:8080/20200928/show.jsp?uname=wsy&upwd=123&uage=18
格式:连接/文件?参数名1=参数值1&…&参数名n=参数值n

get和post请求方式的区别
a、get方式在地址栏显示请求信息(地址栏能够容纳的信息有限,约为4-5KB;如果请求数据存在大文件,会出现地址栏无法容纳全部数据而报错),post不会显示

<form action="show.jsp" method="post">

b、文件上传操作必须是post

统一请求的编码
有两种方式:request和get
get方式如果出现乱码,解决:
a、统一每一个变量的编码(get方法)
new String(旧编码,新编码);
例如tomcat7使用的默认编码是:iso-8859-1
在使用tomcat7时,需要对编码进行统一

name=new String(name.getBytes("iso-8859-1"),"utf-8");

很明显,每个变量都要转换一次,很麻烦

b、修改server.xml,一次性更改tomcat默认get提交方式的编码(get方法)

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

c、post方法进行编码统一
加入代码行:

request.setCharacterEncoding("utf-8");  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值