Java web学习笔记--JSP隐形对象(二)--request、response、out、session对象
request对象
1、作用
主要用于处理客户端请求。
当浏览器请求一个网页,会发送大量信息到web服务器,这些信息不能直接读取,因为信息是作为HTTP请求头的一部分传输到服务器的,但是可以通过request对象提供的方法来获取客户端提交给服务器的信息。
2、常用方法
3、案例演示:编程实现用户注册功能
1、注册信息包括:用户名、密码、你从哪里知道本网站;
2、页面提交后会显示用户输入的数据。
(1)在web目录里创建用户注册页面register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>显示注册信息</title>
</head>
<body>
<%
// 设置请求对象字符编码格式
request.setCharacterEncoding("utf-8");
// 读取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 读取复选框选择项
String[] channels = request.getParameterValues("channel");
StringBuffer buffer = new StringBuffer();
if (channels != null) {
for (int i = 0; i < channels.length; i++) {
buffer.append(channels[i] + " ");
}
}
%>
<h3>用户注册信息</h3>
用户名:<%= username %><br/>
密 码:<%= password %><br/>
渠 道:<%= buffer.toString() %>
</body>
</html>
(2)在web目录里创建处理注册页面do_register.jsp
(3)启动tomcat服务器,查看运行效果
但是在这里还有问题,当你用户名,密码等都不填写的时候,也一样会注册成功,这明显是不对的
所以我们要进行一些修改
首先:给用户注册页面添加表单校验,要求用户名与密码非空。
设置表单元素的id属性是为了页面JavaScript代码能访问该元素,设置表单元素的name属性是为了表单的处理页面能够通过request.getParameter()方法获取到表单元素的值。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<h3 style="text-align: center">用户注册</h3>
<form action="do_register.jsp" method="post">
<table border="1" cellpadding="10" style="margin: 0px auto">
<tr>
<td align="center">用户名</td>
<td><input id="username" type="text" name="username"></td>
</tr>
<tr>
<td align="center">密 码</td>
<td><input id="password" type="password" name="password"></td>
</tr>
<tr>
<td align="center">你从哪里知道本网站</td>
<td>
<input type="checkbox" name="channel" value="报刊">报刊
<input type="checkbox" name="channel" value="网络">网络
<input type="checkbox" name="channel" value="朋友推荐">朋友推荐
<input type="checkbox" name="channel" value="电视">电视
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" οnclick="return checkForm();">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<script type="text/javascript">
function checkForm () {
//获取用户名与密码元素
var txtUsername = document.getElementById("username");
var txtPassword = document.getElementById("password");
//获取用户名与密码
var username = txtUsername.value;
var password = txtPassword.value;
//用户名非空校验
if (username == ""){
alert("注意:用户名不能为空!")
txtUsername.focus();
return false;
}//密码非空校验
if (password == ""){
alert("注意:密码不能为空!")
txtPassword.focus();
return false;
}
return true;
}
</script>
</body>
</html>
重启服务器,查看运行效果:
其实,我们可以将表单校验脚本提取出来创建一个js文件,然后导入页面来使用。
(1)在web目录里创建js子目录,在里面创建check.js文件
(2)删除register.jsp页面里的
response对象
1、作用
主要用于处理服务器端向客户端返回的数据。
2、常用方法
3、案例演示:编程实现用户登录功能
输入用户名与密码,
正确则跳转到用户登录成功页面,否则跳转到用户登录失败页面。
(1)在web目录里创建登录页面login.jsp
(2)在web目录里创建登录处理页面do_login.jsp
(3)在web目录里创建登录成功页面success.jsp和登录失败页面failure.jsp
(4)启动tomcat服务器,查看运行效果
(5)修改登录处理页面,采用同一请求转发来实现页面跳转
(6)重启tomcat服务器,查看运行效果
同意请求转发的数据,在传输过程中采用的是ISO-5589-1编码,因此在的登陆成功页面接收到的中文就会乱码。
要想解决就只需要将接收到的字符串由ISO-5589-1编码转换成UTF-8字符编码即可。
(7)修改登录成功success.jsp与登录失败页面failure.jsp
4、转发与重定向的比较
(1)转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址。
(2)重定向是在客户端发挥作用,通过请求新的地址实现页面转向,重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址。
五、out对象
1、作用
out 对象能把结果输出到网页上;
out主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream)。
2、常用方法
3、案例演示:打印输出九九表
(1)创建nine_nine_table.jsp页面
(2)启动tomcat服务器,查看运行效果
六、session 对象
1、作用
session对象表示目前个别用户的会话(session)状况。session对象实现javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法。
2、常用方法
1、long getCreationTime():取得session产生的时间,单位是毫秒
2、String getId():取得session 的ID
3、long getLastAccessedTime():取得用户最后通过这个session送出请求的时间
4、long getMaxInactiveInterval():取得最大session不活动的时间,若超过这时间,session 将会失效
5、void invalidate():取消session 对象,并将对象存放的内容完全抛弃
6、boolean isNew():判断session 是否为"新"的
7、void setMaxInactiveInterval(int interval):设定最大session不活动的时间,若超过这时间,session 将会失效
8、void setAttribute():设置session对象的属性
9、void getAtrribute():获取session对象的属性
3、案例演示:页面跳转传递会话属性数据
(1)修改do_login.jsp页面,设置会话属性值
(2)修改登录成功success.jsp页面
(3)启动tomcat服务器,查看
同一个用户的session id在什么时候会发生变化?
(1)关闭浏览器之后同一个用户重新登录。
(2)浏览器没有关闭,但是后台服务重启了。
关闭浏览器,重启服务器,,同一个用户重新登录。session id值变了,创建时间和最后访问时间都变了:
不关闭浏览器,再次重新登录,你会发现session id值不变,创建时间不变,但是最后访问时间变了: