4JSP内部对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内置对象
输入/输出对象
作用域通信对象
Servlet 对象
错误处理对象
request response out
session application pageContext
page
exception
config
4 / 82
内置对象分类
分类 对象
输入输出对象
与属性相关的对象 与Servlet相关的对象 错误处理对象
在控制脚本元素,事件处理取name属性要用id值,如:
<FORM action="" method=POST id=form2 name=form1>
<SCRIPT LANGUAGE=javascript> <!-alert() //alert() 是错误的 --> </SCRIPT>
请求
JSP 页面
内置对象
请求
客户端
服务器
10 / 82
request对象
常用方法:
getParameter 返回的是String, 用于读取 String getParameter(String name) :根据页面表单组件名称获取请求页面 提交的表单中的值 ; 提交数据 getAttribute 返回的是Object,需进行转 换,可用setAttribute设置成任意对象,使用 String[ ] getParameterValues (String name):获取页面请求中一个表单组 很灵活。 件对应多个值时的用户的请求数据,如checkbox类(名字相同,但值有多个) 的数据
18 / 92
再次关注中文编码问题
如果JSP将数据输出到页面出现中文乱码,解决 办法: response.setContentType("text/html;charset=gb
2312");
同一个工程中应 如果传递中文参数出现乱码, 对,JSP、 Servlet等都要 当使用同一种中 mes=URLEncoder.encode(mes,"utf-8"); 一致。 文编码。 response.sendRedirect("show.jsp?mes="+mes);
Object getAttribute(String name):返回name指定的属性值,若不存在指定
的属性,就返回null。
Object [] getAttributes():返回request对象的所有属性的名字集合,结果集
是一个Enumeration(枚举)类的实例。
setAttribute(String name, ng.Object obj) :用于设臵request的参数
21 / 82
【例4-3】模拟在线考试系统。
22 / 82
模拟在线考试系统
request.jsp(主界面)输出单选题页面, 题目答完后点击“交卷”,页面跳转到 Handle.jsp页面。 Handle.jsp(数据处理页面) 对提交的数 据进行处理,显示测试成绩。
23 / 82
request.jsp
<%@page contentType="text/html" pageEncoding="utf-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用模拟在线考试系统</title> </head> <body style="font-size:40px;" > <h3>测试题</h3> <hr> <form action="Handle.jsp" method="get"> 1.response对象的setHeader(String name,String value)方法的作用是 ( )。<br> <input type="radio" name="1" value="A">A. HTTP文件头<br> <input type="radio" name="1" value="B">B. 设定指定名字的HTTP文件头的值<br> <input type="radio" name="1" value="C">C. 指定名字的HTTP文件头是否存在<br> <input type="radio" name="1" value="D">D. 向客户端发送错误信息()<br> 2.设臵session的有效时间(也叫超时时间)的方法是( )。<br> <input type="radio" name="2" value="A"> A. setMaxInactiveInterval(int interval)<br> <input type="radio" name="2" value="B"> B. getAttributeName()<br> <input type="radio" name="2" value="C"> C. set AttributeName(String name,ng.Object value)<br> <input type="radio" name="2" value="D"> D. getLastAccessedTime()<br>
传递的是name还是id?
传递的是name还是id?
id就像是一个人的身份证号码,name就是他的名字。 id是不可以重复的,而name是可以重复的,两者都是为了标识对象名称。 表单元素(form,input ,textarea,select)与框架元素(iframe,frame)用 name。表单的接收页面只接收有name的元素。通过表单接收到的不是id值, 而是name值。
再次关注中文编码问题
JSP和Servlet 在获取其他页面提交过来的数据时,如果 与这些页面编码(浏览器和服务器的接收和发送数据的编 码)不一致,则有可能出现中文乱码。
解决办法一:get请求
String name=(String)request.getParameter("name"); name=new String(name.getBytes(“iso-8859-1”), “utf-8”);
request,response,out
session,application,
pageContext
page,config
exception
5 / 82
内部对象的特点
由JSP规范提供,不用编写者实例化。
通过Web容器实现和管理。
所有JSP页面均可使用。 要写在脚本元素的表达式或代码段中:
17 / 82
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
传递的对象用id来标识, 而参数取值从name中取。
14 / 82
<%@ page contentType="text/html; charset=utf-8"%> <html> <head<head> <body style="font-size:40px;" > <h2>个人注册信息</h2> <% request.setCharacterEncoding("utf-8"); String username= request.getParameter("username"); String pwd= request.getParameter("pwd"); out.println("用户名为:"+username+"<br>"); out.println("密码为:"+pwd+"<br>"); String inst[]=request.getParameterValues("inst"); //inst传递的是checkbox数组 out.print("兴趣为:"); for(int i=0;i<inst.length;i++) out.println(inst[i]+" "); %> </body> </html> 15 / 82
JSP和Servlet 在获取其他页面提交过来的数据时,如果 与这些页面编码(浏览器和服务器的接收和发送数据的编 码)不一致,则有可能出现中文乱码。 解决办法二: post请求
request.setCharacterEncoding("ncoding("utf-8”); String username=(String) request.getParameter(“username”); Post请求:org.springframework.web.filter.CharacterEncodingFilter
tomcat/conf/server.xml
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" redirectPort="8443"/>
16 / 82
再次关注中文编码问题
网络程序设计
杨谊
1
第4章 JSP内部对象
Labor
1
2
3
4
5
6
7
8
9
10
Chapter
2 / 82
内置对象(内部对象)
内臵对象是不需要声明,直接可以在JSP 中使用的对象。 利用内臵对象与JSP页面的执行环境产生 互动。
请求
JSP 页面
内置对象
请求
响应 客户端
3
响应 服务器
JSP提供了9个内置对象
值。
Cookie[] getCookies() :返回客户端的所有Cookie对象,结果是一个
Cookie数组。
11 / 82
request对象的应用
【例4-1】应用request对象获取和处理表单 数据。
12 / 82
<html> <head> </head> <body style="font-size:40px;" ><center> 个人注册信息</center> <form name="form1" method="post" action="4-2.jsp"> 用户名:<input name="username" type="text" id="username" style="font-size:40px;" /><br> 密&nbsp;&nbsp;码:<input name="pwd" type="password" id="pwd" style="fontsize:40px;" /><br> 用get可能会产生 兴&nbsp;&nbsp;趣:<input name="inst" type="checkbox" value= "篮球" >篮球 中文乱码,用 <input name="inst" type="checkbox" value= "排球" >排球 post <input name="inst" type="checkbox" value= "则一般不会。 乒乓球" >乒乓球<br><br> <center><input type="submit" name="Submit" value="提交" style="font-size:30px;"> <input type="reset" name="Submit2" value="重臵" style="font-size:30px;"/></center> </form></body> 13 / 82 </html>
19 / 82
修改配置文件
web.xml server.xml
Connector节点添加 userBodyEncodingForURI=“true”
20 / 92
request对象的应用
【例4-2】 应用request对象在页面之间传值,存 放和获取非表单数据。
核心语句:
String m_name = request.getParameter("name"); String m_add = request.getParameter("add"); <% request.setAttribute("error","很抱歉!您输入的用户名或密码不 正确!");%> <% out.println(“错误提示信息:"+request.getAttribute("error"));%>
相关文档
最新文档