实验三 Part 1 JSP的内置对象
一、实验目的
通过编程和上机实验理解 JSP各个页面之间的响应和传递的过程。并且能够熟练的掌握JSP的内置对象的属性和方法,并能灵活运用。
二、实验要求
1.基础练习:request常用方法的使用。
2.编写获取表单数据。
三、实验内容
(一)基础练习:request常用方法的使用
1.用request的各种方法输出request中的各种方法,新建页面requestApp1.jsp源代码如下:
requestApp1.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*" %>
<html>
<head>
</head>
<body>
请求信息如下:<br>
请求的方法是:<%=request.getMethod()%>
<br>
请求的URI是:<%=request.getRequestURI()%>
<br>
请求的协议是:<%=request.getProtocol()%>
<br>
接受客户提交信息的页面路径是:<%=request.getServletPath()%>
<br>
请求的协议是:<%=request.getProtocol()%>
<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 contentType="text/html;charset=gb2312"%>
<script language="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 (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>
<html>
<head>
<title>新用户注册</title>
</head>
<body>
<form method="POST" action=" Accept.jsp" name="form1" οnsubmit="return 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" name="sex" value="女">女<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="8">7</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"><br>
</form>
</body>
</html>
Accept.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%!
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;
}
}
%>
<html>
<head>
<title>接收新用户注册</title>
</head>
<body>
这是新用户注册所提交的数据:
<br>
用户名是:<%=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>
2.部署并浏览该页面。
实验三 Part 2 JSP的内置对象
一、实验目的
通过编程和上机实验理解 JSP各个页面之间的响应和传递的过程。并且能够熟练的掌握JSP的内置对象的属性和方法,并能灵活运用。
二、实验要求
1.编写页面重定向程序。
2.编写session属性设置和获取的程序。
3.编写用out对象输出表格程序。
三、实验内容
(一)页面重定向
1.在建立的WEB工程中建立 Redirect.jsp 文件,
¨程序功能:实现页面的重定向。
¨Redirect.jsp 程序的源代码如下。
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<body>
<%//页面重定向程序片
String url;
url=request.getParameter("goaddress");
if(url!=null)
{
response.sendRedirect(url);
}
%>
<form name="form1" action="Redirect.jsp" method="post" >
页面重定向:
<select name="goaddress" οnchange="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>
2.部署并浏览该页面。
(二)session属性设置和获取
1.在建立的WEB工程中建立 Login.jsp和LoginInfor.jsp 文件。
¨程序功能:实现session属性在整个页面缓存信息的保存和销毁。
¨程序源代码如下:
Login.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<script language="javascript">
function on_submit()
{//验证数据的合法性
if (form1.username.value == "")
{
alert("用户名不能为空,请输入用户名!");
form1.username.focus();
return false;
}
if (form1.userpassword.value == "")
{
alert("用户密码不能为空,请输入密码!");
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("sessionUserLogin1.jsp");
}
%>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<table aligin="center">
<form name="form1" method="post" action=" LoginInfor.jsp " οnsubmit="return on_submit()">
<tr aligin="center">
<td>
用户登录
</td>
</tr>
<tr aligin="center">
<td>
请输入用户名:<input type="text" name="username" size="20">
</td>
</tr>
<tr aligin="center">
<td>
请输入密码: <input type="password" name="userpassword" size="20">
</td>
</tr>
<tr aligin="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"%>
<html>
<head>
<title>用户登录成功</title>
</head>
<body>
用户登录成功!<br>
您的用户名是:<%=(String)session.getAttribute("username")%>
</table>
</body>
</html>
2.部署并浏览该页面。
(三)用out对象输出表格程序
1.在建立的WEB工程中建立Outapp.jsp文件
程序功能:通过使用out输出静态表格,从而掌握利用内置对象实现静态网页的方法。
Outapp.jsp程序源代码如:
<%@ page contentType="text/html;charset=GB2312" %>
<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>
2.部署并浏览该页面。
思考:页面重定向有哪些方式?区别时什么?