《JSP笔记》之四(内部对象上)
jsp试验报告实训4 JSP内置对象-1

实训4 JSP内置对象
实验目的:了解JSP内置对象,及其使用方法
掌握使用JSP的request对象处理页面提交信息的基本方法
实验内容:
实验一:利用request对象获取表单提交信息
制作一个用户信息提交页面,如下所示:
注意内容:
要解决其中的多项选择“爱好”这一项的信息获取,需要采用到数组,使用方法如下:String 数组1[]=request.getParameterValues("输入框名");
提交的信息便存储进入数组1中,输出时候使用循环即可。
用户填写完成后完成,提交到另一个页面,将用户信息显示出来,如下示:
要求:1.页面提交的用户姓名为中文,不能出现乱码
2.表单中的多项选择内容要求正确显示
实训项目二:request对象
在前面实验的基础上,编写程序实现,若用户提交的用户名和密码为空的时候,提示有关错误信息,并跳转回用户信息填写页面,若信息不为空,则跳转到欢迎页面,显示XX用户,欢迎您。
实验步骤:
建立工程—编写程序—编译程序—调试、运行程序。
(可以参考“实验一“中任意一种方法来进行)
实验小结:。
第4章 JSP内置对象详解-1

返回请求URI部分,指定服务器小程序或JSP页面
返回跟随在URI的路径部分后面的查询字符串
4.2 响应对象:RESPONSE
4.2.1 4.2.2 4.2.3 4.2.4
客户端与服务器端的交互 页面重定向 缓冲区的输出 response对象常用方法
4.2.1 客户端与服务器端的交互
13
表单数据传递
CheckBox数据接收方法 String job[] = request.getParameterValues(“job"); if(job != null) { for(int i=0; i<job.length; i++) out.println(job[i] + "<br>"); }
26
27
<html> <head> <title>Where to go</title> </head> <body bgcolor="#fffccc"> <% String address=request.getParameter("dowhat"); if(address!=null) { if(address.equals("login")) response.sendRedirect("login.jsp"); else if(address.equals("register")) response.sendRedirect("register.html"); } %>
与<JSP:FORWARD>的区别
8jsp内置对象(学习笔记)

第四章jsp内置对象(第11、12课时)1,特点:不用声明就可以在jsp页面的脚本部分使用。
2,构成:request、response、session、application、out3,成员的功能及用法:¥request:1,封装了用户提交的信息,该对象调用相应的方法可以获得封装的信息2,客服一般使用html表单向服务器的某个jsp页面提交信息,实现客服端与服务器的交互%说明:”get”提交的信息会在连接窗口显示,”post”则不会3,获取客户提交的信息常用方法:request.getParameter(String s);%说明:所有通过表单提取的信息,都是字符串类型4,例如:%action=”tree.jsp”将表单数据传到”tree.jsp”,若action=””表示传到当前页面又如:注意:声明的变量需要给定初始化,不然没法停留在内存空间中注意:null为空,但不会存在内存空间中,而””为空则会进内存5,注意问题:6,处理汉字信息:当用request对象获取的信息是汉字字符时,会出现乱码,需要进行强制转化处理:(第十二课时)*例如:用于不用的区别:7,常用方法举例:----用法说明8、应用实例:用户注册%散列表(Hashtable):数据的集合,能够一次查找,不用便查找整个集合。
使用相关关键字查找被存储的数据项的数据结构,以牺牲存储空间为前提,耗费空间较大,一般存储较小的数据:“login.jsp”页面:¥response¥session¥application¥out4,http(Hypertext transfer protocol)协议:在互联网上传输数据的协议(服务器与浏览器交互方法)。
请求的结构:行、头域、和可能的信息体例如:若需加端口号,可在域名的后面加冒号和端口号。
JSP内置对象

4.6 其他对象
4.6.1 application对象
application对象为多个应用程序保存信息,对于一个容器 而言,每个用户都共同使用一个application对象,一旦创建, l涂非是服务器关闭,否则一直有效。application对象III session对象不同,它不会为每个用户生成一个对象,而是所 有用户共享一个application对象。所以1SP开发人员通常使用 session对象实现购物车功能,使用application对象实现聊天 室,计数器等功能。表4-5列举了 application对象的方法。
下一页 返回
4.6 其他对象
4.6.2 config对象
config对象被封装成j avax. servlet. S ervletConfig接日,它 表小Servlet的配置。当一个Servlet初始化时,容器把某些信 息通过此对象传递给这个Servlet。
config对象很少用到,本书不做过多介绍,只将其主要方 法列举出来,见表4-6。
第4章 JSP内置对象
4.1 内置对象概述 4.2 out对象 4.3 request对象 4.4 response对象 4.5 session对象 4.6 其他对象
4.1 内置对象概述
动态网站开发中很重要的一个问题是网页之间的信息传递和 状态维护,每当网页被发送到服务器时,都会在服务器端重 新生成网页。在这个往返过程(浏览器一服务器一浏览器)中, JSP提供了一些内置对象保存所有与网页关联的信息。
JSP的内置对象由JSP容器自动为JSP页面提供,是预先存 在的。在编写JSP程序时,可以直接使用。
JSP常用的内置对象包括:out, request response session application config,exceptionpage和 pageContext这9大对象。
JSP程序设计 第四章 内置对象汇总

济南大学信息科学与工程学院 制作人:乔善平
课程:JSP应用程序设计 e-mail:ise_qiaosp@
11/65
3. 基本概念
4 个主要的包 ng
javax.servlet
javax.servlet.http javax.servlet.jsp
济南大学信息科学与工程学院 制作人:乔善平
20/ 页面的 URL String url = request.getHeader(“referer”);
http://127.0.0.1:8084/ch04/index.jsp
济南大学信息科学与工程学院 制作人:乔善平
课程:JSP应用程序设计 e-mail:ise_qiaosp@
使用 session 识别用户
济南大学信息科学与工程学院 制作人:乔善平
课程:JSP应用程序设计 e-mail:ise_qiaosp@
28/65
4. 主要内容
session 对象的 ID 当一个用户首次访问 Web 服务目录中的某个 JSP 时,JSP 引擎为其产生一个 session 对象 该对象中含有一个 String 类型的 ID 号 JSP 引擎同时将这个 ID 号发送到用户端并存储 在 cookie 中 同一用户在不同服务目录中的 session 不同
教材:例 4-12
济南大学信息科学与工程学院 制作人:乔善平
课程:JSP应用程序设计 e-mail:ise_qiaosp@
25/65
4. 主要内容
重定向 sendRedirect(String location );
sendError(int sc);
sendError(int sc, String msg); response.sendRedirect(“error.jsp”); 教材:例 4-13
第四章 JSP 内置对象实验报告

第四章JSP 内置对象4.6 实验一:request对象1,相关知识点在就是jsp中,内置对象request封装了用户请求信息时所提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。
2,参考代码:Register.jsp:<%@page contentType="text/html;charset=gb2312"%><head><%@ include file="head.txt"%></head><%@taglib tagdir="/WEB-INF/tags" prefix="look"%><html><body bgcolor=pink><font size=2><form action="Register_1.jsp" method=post>请输入注册信息,用户名必须由字母或数字组成,带*为必填项。
<table border=1><tr><td>员工编号:</td><td><Input type=text name="id">*</td></tr><tr><td>用户名:</td><td><Input type=text name="name">*</td></tr><tr><td>用户密码:</td><td><Input type=text name="password">*</td></tr><tr><td>用户权限(Y/N):</td><td><Input type=text name="right">*</td></tr><tr><td>性别:</td><td><Input type=text name="sex">*</td></tr><tr><td>联系电话:</td><td><Input type=text name="phone"></td></tr><tr><td>备注:</td><td><Input type=text name="remark"></td></tr></table><br><Input type="submit" name="b" value="提交"><br>注册前<look:QueryTag dataSource="SupermarketMS" tableName="Staff" user="sa" password="sa"/><br><%=queryResult%></font></body></html>Register_1.jsp<%@page contentType="text/html;charset=gb2312"%><%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%><html><body bgcolor=pink><font size=2><%String ID=request.getParameter("id");String aa=request.getParameter("name");String PassWord=request.getParameter("password");String Right=request.getParameter("right");String Sex=request.getParameter("sex");String Phone=request.getParameter("phone");String Remark=request.getParameter("remark");byte bb[]=aa.getBytes("iso-8859-1");aa=new String(bb);%><inquire:Register_2 ID="<%=ID%>" nn="<%=aa%>" pw="<%=PassWord%>"right="<%=Right%>"sex="<%=Sex%>"phone="<%=Phone%>"remark="<%=Remark%>"/><br>注册后所有员工信息<inquire:QueryTag dataSource="SupermarketMS" tableName="Staff" user="sa" password="sa"/><br><%=queryResult%></font></body></html>Register_2.tag代码如下:<%@tag pageEncoding="gb2312"%><%@tag import="java.sql.*"%><%@ attribute name="ID" required="true"%><%@ attribute name="nn" required="true"%><%@ attribute name="pw" required="true"%><%@ attribute name="right" required="true"%><%@ attribute name="sex" required="true"%><%@ attribute name="phone" required="true"%><%@ attribute name="remark" required="true"%><%out.print("hello world");%><% int id=Integer.parseInt(ID);String insert="insert into Staff values("+id+",'"+nn+"','"+pw+"','"+right+"','"+sex+"','"+phone+"','"+remark+"')";try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(Exception e){}Connection con;Statement sql;ResultSet rs;try{String uri="jdbc:odbc:SupermarketMS";con=DriverManager.getConnection(uri,"sa","sa");sql=con.createStatement();sql.executeUpdate(insert);con.close();}catch(Exception e){out.print(""+e);}%>实验2:session对象1,相关知识点Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟. 我们使用session功能,可以达到多个jsp程序从操作同一个java bean, 那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.) 2,参考代码inputGuess.jsp<%@ page contentType="text/html;charset=GB2312" %><HTML><BODY bgcolor=cyan><FONT Size=2><P>随机分给了你一个1到100之间的数,请猜!<%int number=(int)(Math.random()*100)+1;session.setAttribute("count",new Integer(0));session.setAttribute("save",new Integer(number));%><FORM action="result.jsp" method="post" name=form>输入你的猜测:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Result.jsp 的代码如下:<% String str=request.getParameter("boy");if(str.length()==0){response.sendRedirect("inputGuess.jsp");}int guessNumber=-1;try{guessNumber=Integer.parseInt(str);Integer integer=(Integer)session.getAttribute("save");int realnumber=integer.intValue();if(guessNumber==realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("success.jsp");}else if(guessNumber>realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("large.jsp");}else if(guessNumber<realnumber){int n=((Integer)session.getAttribute("count")).intValue();n=n+1;session.setAttribute("count",new Integer(n));response.sendRedirect("small.jsp");}}catch(Exception e){response.sendRedirect("inputGuess.jsp");}%>Small.jsp参考代码为:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><FORM action="result.jsp" method="get" name=form>猜小了,请再猜:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Large.jsp 参考代码如下:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><FORM action="result.jsp" method="get" name=form>猜大了,请再猜:<INPUT type="text" name="boy"><INPUT TYPE="submit" value="送出" name="submit"></FORM></FONT></BODY></HTML>Success.jsp 的参考代码如下:<%@ page contentType="text/html;charset=GB2312" %> <HTML><BODY bgcolor=cyan><FONT Size=2><%int count=((Integer)session.getAttribute("count")).intValue(); int num=((Integer)session.getAttribute("save")).intValue(); %><P>恭喜你,猜对了<BR>您共猜了<%=count%>次,这个数字就是<%=num%> <BR>单机超链接返回到inputGuess.jsp页面:<BR><A href="inputGuess.jsp">inputGuess.jsp</A></FONT></BODY></HTML>3实验结果及分析。
第4章JSP内置对象

第4章 JSP内置对象
28
Java Web开发
§4.4 response对象
4.4.3 案例5 使用response对象重定向页面
案例完成步骤
① 在ch4目录中创建选择 链接的静态页面SelectLi nk.htm。 ② 在ch4目录中编写JSP 页面Sample4_5.jsp,该 页面使用response对象s endRedirect()实现重定 向。 ③ 启动Tomcat服务器, 在浏览器的地址栏中输入 “http://localhost:8080 /ch4/SelectLink.htm” , 验证程序是否能正确执行。
15
第4章 JSP内置对象
Java Web开发
§4.2 request对象
第4章 JSP内置对象
4.2.3 案例2 使用request对象获取表单信息、处理汉字
案例完成步骤
③ 启动Tomcat服务器,在浏览器的地址栏中输入“http://localh ost:8080/ch4/Regist.htm” ,验证程序是否能正确执行。
案例完成步骤
④启动Tomcat服务器,在浏览器的地址栏中输入“http://localho st:8080/ch4/Sample4_1.jsp” ,验证程序是否能正确执行。
12
Java Web开发
§4.2 request对象
4.2.3 案例2 使用request对象获取表单信息、处理汉字 案例学习目标
❖ session对象调用相应的方法可以存储用户在访问各个页 面期间提交的各种信息。
❖ 当用户再次访问连接该服务器的其它页面时,或从该服 务器连接到其它服务器再回到该服务器时,JSP引擎不 再分配给该用户新的session对象,而是使用完全相同的 一个,直到用户关闭浏览器后,服务器端该用户的sessi on对象被销毁,即与用户的会话对应关系被终止。
第四章 内置对象笔记(3)

4.2 JSP内置对象responseresponse对象的主要功能是服务器端用于响应客户请求并向客户端发送信息1 改变contentType属性的值当一个客户请求访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性的值为text/html,那么response对象按照这种属性值做出响应,将页面的静态部分返回给客户。
由于page指令只能为contentType指定一个值,来决定响应的MIME类型,如果想动态地改变这个属性的值来响应客户,就需要让response对象调用setContentType(String s)方法来改变contentType的属性值:public void setContentType(String s)当服务器用setContentType方法动态改变了contentType的属性值,即响应的MIME类型,并将JSP页面的输出结果按照新的MIME类型返回给客户时,客户端要保证支持这种新的MIME类型。
response.setHeader(“头信息内容”,”头信息参数”);最有用的一个头信息:刷新(refresh)应用:通过setHeader可以实现跳转功能举例:两秒后跳到另一个页面上response.setHeader(“refresh”,”2;URL=另一页面名称”);3.response 对象常用方法void sendRedirect (String location):将请求重新定位到一个不同的URL (重定向)——客户端跳转应用:在首页面(input1.jsp)上输入用户名、密码,提交至input2.jsp进行处理<%服务器端跳转一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程4.4 JSP内置对象sessionsession对象用来存储有关用户会话的所有信息,直到它的生命周期超时或被人为释放掉为止。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《JSP笔记》之四第四章JSP内置对象(上)§4.1 内部对象request和ASP一样,JSP中也提供了一些特殊的对象来设计网页。
和一般类的对象不同,这些对象在使用前不需要声明,直接就可以在网页中使用,所以称为“内置对象”。
常用的有request、response、session、application、out 。
§4.2.1 request对象接收表单传来的数据request对象是非常重要、非常常用的一个内部对象。
用于服务器获得客户端网页的信息。
如用户提交的信息,或客户机自己内部的信息。
request最常用的方法是getParameter()、getParameterV alues()。
使用方法如下:1.文本框数据的采集getParameter方法:在一些网页中常常见到文本框、单选框、复选框、下拉框等,提供给用户输入信息。
这些网页我们约定称为“前台网页”。
在用户输入数据到这些框中时,网页设计者先要插入一个表单,将这些框括起来。
即<form action=”处理文件名” method=post> //前台网页<input type=text name=”name1” size=30 value=”刘德华”>……</form>上一段语句中,提到“处理文件名”,其实就是后台网页文件。
而上面的这一段语句应该在前台网页中。
后台网页中,对应的文本框name1变量的值由request.getParameter(“name1”) 获得,即可由request内部对象的getParameter方法来得到客户机传来的信息,而接收到的信息是String类型的,可以按Java中String类数据来处理。
如在后台网页文件中加入:<%String nn;String pp;nn=request.getParameter("name1");pp=request.getParameter("password1");out.println("<br>"+"Y our name is :");out.println(nn);out.println("<br>"+"Y our password is :");out.println(pp);%>就可以获得前台网页的二个文本框name1和password1中用户输入的内容了。
例1简单JSP网页制作――登录界面制作本案例主要说明如何使用JSP建立交互式网页。
前台网页文件名front.jsp<%@ page contentType="text/html;Charset=GB2312" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><form action="back.jsp" method="get"><table width="203" border="0" cellpadding="5" cellspacing="0" ><tr><td width="67">用户名:</td><td width="114"><input name="name" type="text" id="name"size="15"></td></tr><tr><td>密码:</td><td><input name="passwd" type="password" id="passwd" size="15"></td> </tr><tr><td></td><td><input type="submit" name="Submit" value="确定"><input name="reset" type="reset" value="取消"></td></tr></table></form></body></html>后台网页文件名back.jsp<%@ page contentType="text/html;Charset=GB2312" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%String nn = request.getParameter("name");String pw = request.getParameter("passwd");out.println("Y our name is: " + nn + "<br>");out.println("Y our passwd is: " + pw);%></body></html>程序图1-1运行界面图1-2输入信息后,点击“确定”按钮,跳到后台网页图1-3输入信息提交后的界面2. 方法getParameterValues若一个表单域有多个输入值,则需要用到方法getParameterV alues(“……”)。
有时,复选框、下拉框、组合框这些表单域使用相同的name名,但却可以接收多个选项,这时若使用getParameter方法就无法接收所有数据(只能接收到第一个数据),只能改为用数组方式接收,即用request对象的另一个方法----getParameterV alues()。
如:String cities[ ]=request.getParameterV alues(“select1”);……for(int i=0;i<cities.length;i++){out.println(“<li>”+cities[i]);}在下题的第2种情况中,对getParameterV alues(“……”)的用法有所示范。
例2 列表框在页面交互中的应用第1种不允许复选的下拉框前台网页文件名city.jsp其处理文件(后台网页)名city_back.jsp图2-1运行界面图2-2提交后的界面第2种允许复选的下拉框前台网页文件名cities.jsp<%@ page contentType="text/html; charset=ISO8859_1"%><html><head><title>允许复选的下拉框</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head><body><h2><p>允许复选的下拉框</p></h2><hr width =200 align =left ><form action ="cities_back.jsp" method =post ><select multiple name ="city" size=4><option selected >北京市</option><option >上海市</option><option >济南市</option><option >青岛市</option><option >天津市</option></select><p><input type =submit name="submit1" value ="提交"> </form></body></html>其后台网页文件名cities_back.jsp<%@ page contentType="text/html; charset=ISO8859_1" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><%@ page import="java.util.*,ng.*,java.io.*" %><title>允许复选的下拉框</title></head><body bgcolor =#cccccc><h2><p>允许复选的下拉框</p></h2><hr align =left width =200><p>您选择的城市是:</p><%String citys[]=request.getParameterV alues("city");if(citys!=null){for(int i=0;i<citys.length;i++){out.println("<li>");out.println(citys[i]+" ");}}%></body></html>图2-3复选列表框的运行界面图2-4复选列表框提交后的界面例3网页中单选按钮的使用前台网页文件名identification.jsp<%@ page contentType="text/html; charset=ISO8859_1"%><html><head><title>网页中单选按钮使用</title></head><body bgcolor="#FFCCCC"><form Action="identification_back.jsp" Method="post"><p>身份:<input Type="Radio" Name="ide" V alue="教师">教师<input Type="Radio" Name="ide" V alue="学生" Checked>学生</p><p>性别:<input Type="Radio" Name="sex" V alue="男" Checked>男<input Type="Radio" Name="sex" V alue="女">女</p><p><input Type="Submit" V alue="提交"> </p></form></body></html>后台网页文件名identification_back.jsp<%@ page contentType="text/html;charset=GBK" %><%request.setCharacterEncoding("GBK");String ide = request.getParameter("ide");String sex = request.getParameter("sex");%><HTML><HEAD><TITLE>网页中单选按钮使用</TITLE></HEAD><BODY bgcolor="#FFCCCC"><CENTER>您是<%=ide%>,是<%=sex%>性</CENTER></BODY></HTML>运行后,效果如下图3-1提交信息界面图3-2处理用户输入界面例4网页中复选框的使用前台网页文件名check.jsp<%@ page contentType="text/html; charset=gb2312"%><html><head><title>网页中复选框使用</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body bgcolor="#FFCCCC"><p>您希望选修课程:</p><form Action="check_back.jsp" Method="post"><input Type="checkBox" name="name" value="JSP程序设计">JSP程序设计<br><input Type="checkBox" name="name" value="JSP实战案例">JSP实战案例<br><input Type="checkBox" name="name" value="JavaScript程序设计">JavaScript 程序设计<br><p><input Type="Submit" V alue="提交"> </p></form></body></html>其后台网页文件名check_back.jsp<%@ page contentType="text/html; charset=gb2312"%><html><head><title>网页中复选框使用</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><BODY bgcolor="#FFCCCC"><font color="#660000" size="4" face="隶书">您希望选修课程:</font><UL><%request.setCharacterEncoding("GBK");String names[] = request.getParameterV alues("name");//因此,后台只能用词组方法接收if(names != null) {for(int i=0; i<names.length; i++)out.println(names[i] + "<br>");}%></UL></BODY></HTML>运行效果如下:图4-1输入信息界面图4-2显示运行结果网页下面是一个混合使用getParameter()和getParameterV alues()方法的例子。