使用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)
{
// 是打印空格
out.print(hobby+" ");
}
}
%>
</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");