资源描述
实验二JSP基础与内置对象
一、实验目的
1、熟悉和掌握Eclipse,并编写简单的JSP程序;
2、熟悉和灵活掌握JSP 基本语法;
3、熟悉和掌握JSP的内置对象的相关属性和方法。
二、 实验要求
1、编写简单的计数器程序;
2、编写JSP的include指令的程序;
3、 编写JSP动态指令forward的程序;
4、 编写JSP中文字符处理程序;
5、request常用方法的使用;
6、编写获取表单数据;
7、编写页面重定向程序;
8、编写session属性设置和获取的程序;
9、编写用out对象输出表格程序。
三、实验内容
1、编写简单的计数器程序
1)、 本实验主要目的是让我们熟悉和掌握JSP程序段的基本语法: <%code fragment%> ,实验中,<%counterFunction();%>就是这个JSP的程序段,而这个函数就是用来计算访问人数的。
2)、实验结果: 网站计数器
您是第28位访问者!!!
2、 编写JSP的include指令的程序
1)、include指令的语法格式:<%@ include file=“url”%> 例如:
<%@ include file="top.txt"%>和<%@ include file="bottom.txt"%> ,然后将file中的top.txt和bottom.txt改为bottom.jsp和top.jsp,程序运行会出错,此时,解决的方法是将文件top.txt和bottom.txt改为后缀为.jsp的JSP文件,即可正常运行。
2) 、实验结果:
3、 编写JSP动态指令forward的程序
1)、<jsp:forward>动作用来把JSP页面重定向到另一个页面上,这个程序的核心代码是<jsp:forward page="count.jsp" />和<jsp:forward page="include.jsp" /> ,如果case的值为1,则跳转到count.jsp页面;如果case的值为2,则跳转到include.jsp 。
2)、实验结果:
4、 编写JSP中文字符处理程序
1)、 本程序处理中文字符串的核心代码
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
但是,仅仅这样而去运行程序,得出的是中文乱码,所以为了解决这一问题,需要在s=new String(tempB);里加入"utf-8",即
s=new String(tempB,"utf-8");这样得出的结果才不会出现中文乱码。
2)、实验结果:
5、request常用方法的使用
1)、request方法 格式:<%=request.get+获取的方法%> ,这里方法里可以带参数也可以不带参数:
比如:不带参数,请求的方法是:<%=request.getMethod()%>
带参数,HTTP头文件中Host的值是<%=request.getHeader("Host")%>
2)、Enumeration getHeaderNames() 返回所有request header名字的一个枚举;如:
<% Enumeration enumHead=request.getHeaderNames();
while(enumHead.hasMoreElements())
{
out.println((String)enumHead.nextElement());
}
%>
Enumeration getHeader(Srting name) 返回指定名字的request header的所有值;如:<br>头文件中指定头名字的全部值的一个枚举:
<% Enumeration enum_headedValues=request.getHeaders("cookie");
while(enum_headedValues.hasMoreElements())
{
out.println((String)enum_headedValues.nextElement());
}
%>
3)、实验结果:
请求信息如下:
请求的方法是:GET
请求的URI是:/test2/requestApp1.jsp
请求的协议是:HTTP/1.1
接受客户提交信息的页面路径是:/requestApp1.jsp
请求的协议是:HTTP/1.1
请求中的查询字符串是:null
请求信息的总长度是:-1
服务器名称是:zqy-computer
提供HTTP服务的服务器端口号是:8080
客户端IP地址是:fe80:0:0:0:c5e4:7d93:1be:46a5
客户端机器的名称是:fe80:0:0:0:c5e4:7d93:1be:46a5
HTTP头文件中User-Agent的值是:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
HTTP头文件中accept的值是:*/*
HTTP头文件中Host的值是:zqy-computer:8080
HTTP头文件中accept-encoding的值是:gzip, deflate
头名字的一个枚举:accept accept-language user-agent ua-cpu accept-encoding host connection cookie
头文件中指定头名字的全部值的一个枚举: JSESSIONID=0F506FC813FEBF5689F6C76AF1A975A8
6、编写获取表单数据
1)、<form></form>表单有两个关键属性<method>和<action>,因为本实验涉及到密码等敏感信息,所以method的属性值选择用post,action则跳转到Accept.jsp这个后台接收数据的界面;如:
<form method="POST" action=" Accept.jsp" name="form1" onsubmit="return on_submit()">
2)、实验用function on_submit()来验证数据的合理性,是否为空和邮箱的格式是否有误。就比如验证用户名是否为空,
if (form1.username.value == "")
{
alert("用户名不能为空,请输入用户名!");
form1.username.focus();
return false;
}
如果用户名为空,则输出提示信息,将光标重新定位在用户名的输入框内,同理,其他的验证也是一样,不过要验证邮箱格式的合理性的时候,要用到charAt()函数来检索范围为[0,email.length]下所有字符是否有“@”,如果有则为正确的邮箱格式form1.email.value.charAt(i)=="@")。
3)、Accept.jsp页面用codeToString()函数来实现中文字符串的处理,然后调用该函数获取用户所提交的数据,如:
用户名是:<%=codeToString(request.getParameter("username"))%>
4) 、实验结果:
7、 编写页面重定向程序
1)、本实验,通过request.getParameter()方法来获取有效的url,url=request.getParameter("goaddress");利用response对象来实现页面的跳转,如,response.sendRedirect(url)就是将服务器发送一个重定位到url的请求,将客户重定位到一个不同的Web资源上。
2)、实验结果为url指定的网页,略。
8、编写session属性设置和获取的程序
1)、session对象的设定方法:<%@page session=“true|false”%>,本实验,session.setAttribute("username",codeToString(username));来存放用户名的数据,然后使用response.sendRedirect("LoginInfor.jsp ");将用户名数据跳转到LoginInfor.jsp 。
2)、实验结果:
http://zqy-computer:8080/test2/Login.jsp
http://zqy-computer:8080/test2/LoginInfor.jsp
9、 编写用out对象输出表格程序
1)、本实验的主要目的是熟悉和灵活运用out对象的使用方法,这里,运用print()方法来输出一个表格,我们知道,out对象除了print()方法还有clear()、close()、getBufferSize()等常用方法,只要多多上机练习,掌握out对象的方法不会是一件难事。
2)、实验结果,图略。
四、实验中遇到的问题及解决方法
1、实验中遇到一种问题是,在将word文档中的代码复制到MyEclipse中的时候,会莫名的提示出错,从表面上来看,代码没有任何问题,但是就是提示有错,后经仔细检查才发现,原来看不见的空格也是一种错误;
改正:将提示处删除,然后将代码退至原来位置。
2、在运行requestAppa.jsp时,提示HTTP Status 500;
改正:将<%@ page contentType="text/html;charset=gb2312"%>中
的charset=gb2312改为charset=utf-8 。
3、实验在运行的时候。有时会出现HTTP Status 404 -/test1/login.jsp这样的错误提醒,原因是将工程名和相对应的.jsp文件名在浏览器中输入错了(我觉得这虽然是一个低级的错误,但也算的上是一个错误);
改正:将工程名改为test2,即8080/test2/Login.jsp 这样才能得出运行结果。
4、convert.jsp提交用户名后出现中文乱码;
改正:在s=new String(tempB)中添加utf-8即String(tempB,"utf-8")。
5、session属性设置和获取实验中,实验结果跳转不到预想的页面上,原因是response.sendRedirect("sessionUserLogin1.jsp");没有sessionUserLogin1.jsp这文件;
改正:将"sessionUserLogin1.jsp"改为"LoginInfor.jsp"。
五、 实验小结
页面重定向有哪些方式?区别时什么?
页面重定向的方式有两种:
一种是通过forward方法<jsp:forward page=”url”/>,另一种则是response对象的sendRedirect方法<%response.sendRedirect(“NewUser.jsp”);%> 。
这两种方法主要区别有:
1、 forward方法是在Web container内部工作的;SendRedirect方法需要到客户端的一个往返,所以forward方法要比sendreRirect要快。
2 、forward方法只能重定向到同一个Web应用程序中的一个资源;sendRedirect方法可以重定向到任何URL。
3 、forward方法还将原始的HTTP请求对象(request)转到目录页;sendRedirect方法的功能是触发浏览器转向指定的URL,并不会将原始请求对象转发。
8
展开阅读全文