文章目录
1 实验目的
- 掌握如何获得
请求参数
; - 了解如何通过
请求对象
获得客户信息; - 重点掌握
request
对象、session
对象、application
对象的用法; - 重点掌握使用请求对象
存储数据
和请求转发
。
2 实验原理
2.1 request 对象
request对象封装了服务器信息(如端口号、真实路径及访问协议等)、客户端用户请求信息等。通过request对象可以获取服务器信息
及客户端请求信息
等。
2.2 session 对象
在Web中,session
对象有两个含义:
- 代表一种生命周期,指用户在浏览某个网站时,从进入网站到浏览器关闭这段时间,也就是用户浏览网站所花费的这段时间;
- 容器性的内置对象,有服务器为用户自动创建,为用户都享,常用来存放session生命周期中的有关信息。
2.3 application 对象
application对象保存着Web应用运行期间的全局数据和信息,从Web应用开始运行,该对象就被创建,在整个Web应用运行期间可以在任何JSP页面中访问这个对象,如果要保存整个Web应用运行期间都可以访问的数据,就要用到application对象。
3 实验内容与步骤
3.1 表单传参
编写用户表单JSP程序,显示用户表单传递结果。
3.1.1 编写 req_form.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'req_form.jsp' starting page</title>
</head>
<body>
<form action="req_recv.jsp" method="post">
<table border="1">
<tr><td>用户名:</td><td><input type="text" name="name"></td></tr>
<tr><td>密 码:</td><td><input type="password" name="password"></td></tr>
<tr><td colspan="2">
<input type="checkbox" name="hobby" value="骑车">骑自行车
<input type="checkbox" name="hobby" value="驾车">驾驶小汽车
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交">
<input type="reset" value="取消">
</td>
</tr>
</table>
</form>
</body>
</html>
3.1.2 编写req_recv.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>request对象测试</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String parameterName=null;
String[] parameterValue=null;
%>
<p>使用request.getParameter("name")获取表单所有参数</p>
<%
out.println(request.getParameter("name"));
%>
<p>使用request.getParameterNames("name")获取表单所有参数</p>
<%
Enumeration en=request.getParameterNames();
int j=0;
while(en.hasMoreElements()){
parameterName=(String)en.nextElement();
parameterValue=request.getParameterValues(parameterName);
out.println("表单参数名称:" + parameterName + "=");
%>
<%
for(int i=0;i<parameterValue.length;i++){
%>
<%=parameterValue[i] %>
<%} %><br/>
<% } %>
</body>
</html>
3.1.3 使用类似下面的URL访问之
http://localhost:8080/prac01_request/req_form.jsp
将出现如图2-1所示表单界面。
图2-1
单击提交按钮,弹出图2 -2所示界面。
图2-2
3.2 模拟用户登录
模拟一个用户登录动作,在这个实验中,不对用户提交信息作登录验证,只要用户名和密码不为空即可登录。
登录时将用户信息保存在session
对象中(这样处理只是方便说明session对象的用法,具体开发中必须对登录信息进行数据库验证)。
编写3个JSP程序login.jsp
、loginCheck.jsp
、main.jsp
,程序功能分别是:
- 进行用户登录
- 登录信息处理
- 登录后工作页面中获取保存在session中的用户信息。
3.2.1 编写login.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户登录界面</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<font size="2">
<form action="loginCheck.jsp" method="post">
用户名:<input type="text" name="userName" size="10"/><br>
密 码:<input type="password" name="passWord" size="10"/><br></font>
<font size="1">(提交后,用户名将被存入session中)</font><br>
<input type="submit" value="提交">
</form>
</body>
</html>
3.2.2 编写loginCheck.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户登录验证页面</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%
request.setCharacterEncoding("UTF-8");
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
if(userName.length()>0 && passWord.length()>0){
session.setAttribute("uname", userName);
response.sendRedirect("main.jsp");
}else{
response.sendRedirect("login.jsp");
}
%>
</head>
<body>
</body>
</html>
3.2.3 编写main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>系统主界面</title>
</head>
<body>
<font size="2">
<%
String uname=(String)session.getAttribute("uname");
if(uname!=null){
out.print("登录成功!欢迎" + uname + "浏览站点");
}else{
response.sendRedirect("login.jsp");
}
%><br>
<font size="1" color="green">上述名称<%=uname %>是从session中取出的</font>
</font>
</body>
</html>
3.2.4 使用类似下面的URL访问之
在地址栏输入:http://localhost:8080/prac01_session/login.jsp
体会session的作用和用法,如图2-2、图2-3所示。
图2-2
图2-3
3.3 利用application对象实现网站访问计数
3.3.1 编写visitPageCount.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>application测试</title>
</head>
<body>
<font size="2">
<%
int count=0;
if(application.getAttribute("count")==null){
count=count+1;
application.setAttribute("count", count);
}else{
count=Integer.parseInt(application.getAttribute("count").toString());
count=count+1;
application.setAttribute("count", count);
}
out.println("您是本系统的第" + count + "个访问者。");
%>
</font>
</body>
</html>
3.3.2 使用类似下面的URL访问之
在浏览器地址栏输入URL如下:http://localhost:8080/prac01_application/visitPageCount.jsp
运行结果如图2-4所示。
图2-4
4 思考题
- 如何获得请求参数?
- 如何在请求对象中共享数据?
5 实验总结
这个实验中,实现了request对象、session对象、application对象的用法,实现数据的传递和共享。