JSP内置对象
一、实验目的:
通过编程和上机实验理解 JSP 各个页面之间的响应和传递的过程。并且能够熟练的掌 握 JSP 的内置对象的属性和方法,并能灵活运用。
二、实验环境:
MyEclipse10+Tomcat 7.0+Java EE 6.0
三、实验内容:
(一)基础练习:request常用方法的使用
1.用 request 的各种方法输出 request 中的各种方法,新建页面 requestApp1.jsp 源代码如 下: //requestApp1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>request的各种方法</title>
</head>
<body>
请求信息如下:<br>
请求的方法是:<%=request.getMethod() %>
<br>
请求的URI是:<%=request.getRequestURI() %>
<br>
请求的协议是:<%=request.getProtocol() %>
<br>
接受客户提交的页面路径是:<%=request.getServletPath() %>
<br>
请求中的查询字符串是:<%=request.getQueryString() %>
<br>
请求信息的总长度是:<%=request.getContentLength() %>
<br>
服务器名称是:<%=request.getServerName() %>
<br>
提供HTTP服务的服务器端口号:<%=request.getServerPort() %>
<br>
客户端IP地址是:<%=request.getRemoteAddr() %>
<br>
客户端机器的名称是:<%=request.getRemoteHost() %>
<br>
HTTP头文件中User-Agent的值是:<%=request.getHeader("User-Agent") %>
<br>
HTTP头文件中accept的值是:<%=request.getHeader("accept") %>
<br>
HTTP头文件中Host的值是:<%=request.getHeader("Host") %>
<br>
HTTP头文件中accept-encoding的值是:<%=request.getHeader("accept-encoding") %>
<br>头名字的一个枚举:
<%
Enumeration enumHead=request.getHeaderNames();
while(enumHead.hasMoreElements())
{
out.println((String)enumHead.nextElement());
}
%>
<br>头文件指定头名字的全部值的一个枚举:
<%
Enumeration enum_headedValues=request.getHeaders("cookie");
while(enum_headedValues.hasMoreElements())
{
out.println((String)enum_headedValues.nextElement());
}
%>
</body>
</html>
运行结果:
(二)获取表单数据
1.建立一个新的 WEB 工程,再建立一个 Register.jsp 和 Accept.jsp。
(1)程序功能:实现页面与页面之间的信息交换。
(2)程序源代码如下。
//Register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>新用户注册</title>
<script type="text/javascript">
function on_submit()
{
//验证数据的合法性
if(form1.username.value=="")
{
alert("用户名不能为空,请输入用户名!");
form1.username.focus();
return false;
}
if(form1.userpassword.value=="")
{
alert("用户密码不能为空,请输入密码!");
form1.userpassword.focus();
return false;
}
if(form1.reuserpassword.value=="")
{
alert("用户确认密码不能为空,请确认密码!");
form1.reuserpassword.focus();
return false;
}
if(form1.userpassword.value!=form1.reuserpassword.value)
{
alert("两次输入的密码不一致,请重新输入!");
form1.userpassword.focus();
return false;
}
if(form1.email.value.length!=0)
{
for(var i=0;i<form1.email.value.length;i++)
{
if(form1.email.value.charAt(i)=="@")
break;
}
if(i==form1.email.value.length)
{
alert("非法Email地址!");
form1.email.focus();
return false;
}
}
else
{
alert("请输入Email!");
form1.email.focus();
return false;
}
}
</script>
</head>
<body>
<form action="Accept.jsp" method="post" name="form1" onsubmit="on_submit()">
新用户注册<br>
用户名(*):<input type="text" name="username" size="20"><br>
密 码:(*):<input type="password" name="userpassword" size="20"><br>
再输入一次密码(*):<input type="password" name="reuserpassword" size="20"><br>
性别:<input type="radio" value="男" checked name="sex">男
<input type="radio" value="女" name="sex">女<br>
出生年月:<input name="year" size="4" maxlength=4>年
<select name="month">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>月
<input name="day" size="3" maxlength=4>日<br>
电子邮箱(*):<input name="email" maxlength=28><br>
家庭住址:<input type="text" name="address" size="20"><br>
<input type="submit" value="提交" name="B1">
<input type="reset" value="全部重写" name="B2">
</form>
</body>
</html>
Accept.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>
<%!
public String codeToString(String str)
{
//处理中文字符串的函数
String s=str;
try {
byte tempB[]=s.getBytes("IOS-8859-1");
s=new String(tempB);
return s;
}catch(Exception e) {
return s;
}
}
%>
<%request.setCharacterEncoding("utf-8"); %>
<body>
这是新用户注册所提交的数据:
<br>
<% request.setCharacterEncoding("utf-8");%>
用户名是:<%=codeToString(request.getParameter("username"))%><br>
密码是:<%=codeToString(request.getParameter("userpassword"))%><br>
性别是:<%=codeToString(request.getParameter("sex"))%><br>
出生年月是:<%=request.getParameter("year")+"-"+request.getParameter("month")+"-"+request.getParameter("day") %><br>
电子邮箱是:<%=request.getParameter("email") %><br>
家庭住址是:<%=codeToString(request.getParameter("address")) %><br>
</body>
</html>
运行结果:
(三)页面重定向
- 在建立的 WEB 工程中建立 Redirect.jsp 文件
- 程序功能:实现页面的重定向。
- Redirect.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>
<% //页面重定向程序片
String url;
url=request.getParameter("goaddress");
if(url!=null)
{
response.sendRedirect(url);
}
%>
<form name="form1" action="Redirect.jsp" method="post">
页面重定向:
<select name="goaddress" onchange="javascript:form1.submit()">
<option value="">=======请选择=======</option>
<option value="http://www.csai.cn">中国系统分析员</option>
<option value="http://www.51cmm.com">软件工程专家网</option>
<option value="http://www.hnii.gov.cn">湖南省信息力</option>
<option value="http://www.temco.com.cn">天工远科信息技术有限公司</option>
</select>
</form>
</body>
</html>
运行结果:
(四)session属性设置和获取
1. 在建立的 WEB 工程中建立 Login.jsp 和 LoginInfor.jsp 文件。
程序功能:实现 session 属性在整个页面缓存信息的保存和销毁。
程序源代码如下:
Login.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户登录</title>
<script>
function on_submit(){
//验证数据的合法性
if(form1.username.value==""){
alert("用户名不能为空,请输入用户名!");
form1.username.focus();
return false;
}
if(form1.userpassword.value==""){
aler("用户名密码不能为空,请输入密码!");
form1.userpassword.focus();
return false;
}
}
</script>
<%!
public String codeToString(String str){
//处理中文字符串的函数
String s=str;
try{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}catch(Exception e){
return s;
}
}
%>
<%
String username=request.getParameter("username");
String userpassword=request.getParameter("userpassword");
if(username!=null & userpassword!=null){
//如果用户名和密码都合法,记下用户名,一般吧用户名和密码存在数据中,
//用数据库中的信息与提交的用户名和密码比较进行用户合法性检查
//这些内容在后续章节中会继续学习
session.setAttribute("username", codeToString(username));
response.sendRedirect("LoginInfo.jsp");
}
%>
</head>
<body>
<table align="center">
<form name="form1" menthod="post" action="Login.jsp" onsubmit="on_submit();">
<tr align="center">
<td>用户登录</td>
</tr>
<tr align="center">
<td>请输入用户名:<input type="text" name="username" size="20"></td>
</tr>
<tr align="center">
<td>请输入密码: <input type="password" name="userpassword" size="20"></td>
</tr>
<tr align="center">
<td>
<input type="submit" value="提交" name="B1">
<input type="reset" value="全部重写" name="B2">
</td>
</tr>
</form>
</table>
</body>
</html>
LoginInfo.jsp的源代码:
<%@ page contentType="text/html;charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户登录成功</title>
</head>
<body>
<table>
用户登录成功!
您的用户名是:<%=(String)session.getAttribute("username") %>
</table>
</body>
</html>
(五)用out对象输出表格程序
1. 在建立的WEB工程中建立Outapp.jsp文件
程序功能:通过使用out输出静态表格,从而掌握利用内置对象实现静态网页的方法。
Outapp.jsp程序源代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>out应用示例</title>
</head>
<body>
<%
out.print("<table border='1' width='100%'><tr><td width='100%' colspan='4'>");
out.print("参会人员名单(用out输出表格)"+"</tr>");
out.print("<tr><td width='25%'>"+"姓名"+"</td>");
out.print("<td width='15%'>"+"年龄"+"</td>");
out.print("<td width='15%'>"+"性别"+"</td>");
out.print("<td width='45%'>"+"工作单位"+"</td></tr>");
out.print("<tr><td width='25%'>"+"邓子云"+"</td>");
out.print("<td width='15%'>"+"26"+"</td>");
out.print("<td width='15%'>"+"男"+"</td>");
out.print("<td width='45%'>"+"长沙市商业银行"+"</td></tr>");
out.print("<tr><td width='25%'>"+"张赐"+"</td>");
out.print("<td width='15%'>"+"27"+"</td>");
out.print("<td width='15%'>"+"男"+"</td>");
out.print("<td width='45%'>"+"长沙凌远信科技有限公司"+"</td></tr>");
out.print("<tr><td width='25%'>"+"袁数雄"+"</td>");
out.print("<td width='15%'>"+"31"+"</td>");
out.print("<td width='15%'>"+"男"+"</td>");
out.print("<td width='45%'>"+"计算机学院"+"</td></tr>");
out.print("</table>");
%>
</body>
</html>
运行截图: