您好,欢迎访问三七文档
网络程序设计杨谊1第4章JSP内部对象Labor123456789Chapter102/82内置对象(内部对象)内置对象是不需要声明,直接可以在JSP中使用的对象。利用内置对象与JSP页面的执行环境产生互动。JSP页面内置对象客户端响应请求响应请求服务器3JSP提供了9个内置对象内置对象输入/输出对象作用域通信对象Servlet对象错误处理对象requestresponseoutsessionpageContextapplicationpageconfigexception4/82内置对象分类分类对象输入输出对象request,response,out与属性相关的对象session,application,pageContext与Servlet相关的对象page,config错误处理对象exception5/82内部对象的特点由JSP规范提供,不用编写者实例化。通过Web容器实现和管理。所有JSP页面均可使用。要写在脚本元素的表达式或代码段中:%=使用内部对象%或%使用内部对象%6/82第4章JSP内部对象掌握与输入输出有关的对象(任务一)掌握与属性相关的对象(任务二)了解与Servlet相关的对象(任务三)JSP内部对象的应用(任务四)12348/82任务一:掌握与I/O有关的对象requestresponseout分类对象输入输出对象request,response,out与属性相关的对象session,application,pageContext与Servlet相关的对象page,config错误处理对象exception9/809request对象当用户请求一个JSP页面时,Tomcat服务器将用户的请求封装在内置对象request中。实现javax.servlet.http.HttpServletRequest接口,使用HTTP协议处理客户端的请求。JSP页面内置对象客户端请求请求服务器10/82request对象常用方法:StringgetParameter(Stringname):根据页面表单组件名称获取请求页面提交数据String[]getParameterValues(Stringname):获取页面请求中一个表单组件对应多个值时的用户的请求数据,如checkbox类(名字相同,但值有多个)的数据ObjectgetAttribute(Stringname):返回name指定的属性值,若不存在指定的属性,就返回null。Object[]getAttributes():返回request对象的所有属性的名字集合,结果集是一个Enumeration(枚举)类的实例。setAttribute(Stringname,java.lang.Objectobj):用于设置request的参数值。Cookie[]getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组。getParameter返回的是String,用于读取提交的表单中的值;getAttribute返回的是Object,需进行转换,可用setAttribute设置成任意对象,使用很灵活。11/82request对象的应用【例4-1】应用request对象获取和处理表单数据。12/82htmlhead/headbodystyle=font-size:40px;center个人注册信息/centerformname=form1method=postaction=4-2.jsp用户名:inputname=usernametype=textid=usernamestyle=font-size:40px;/br密 码:inputname=pwdtype=passwordid=pwdstyle=font-size:40px;/br兴 趣:inputname=insttype=checkboxvalue=篮球篮球inputname=insttype=checkboxvalue=排球排球inputname=insttype=checkboxvalue=乒乓球乒乓球brbrcenterinputtype=submitname=Submitvalue=提交style=font-size:30px;inputtype=resetname=Submit2value=重置style=font-size:30px;//center/form/body/html传递的是name还是id?13/82用get可能会产生中文乱码,用post则一般不会。传递的是name还是id?id就像是一个人的身份证号码,name就是他的名字。id是不可以重复的,而name是可以重复的,两者都是为了标识对象名称。表单元素(form,input,textarea,select)与框架元素(iframe,frame)用name。表单的接收页面只接收有name的元素。通过表单接收到的不是id值,而是name值。在控制脚本元素,事件处理取name属性要用id值,如:FORMaction=method=POSTid=form2name=form1SCRIPTLANGUAGE=javascript!--alert(form2.name)//alert(form1.name)是错误的--/SCRIPT传递的对象用id来标识,而参数取值从name中取。14/82%@pagecontentType=text/html;charset=utf-8%htmlheadheadbodystyle=font-size:40px;h2个人注册信息/h2%request.setCharacterEncoding(utf-8);Stringusername=request.getParameter(username);Stringpwd=request.getParameter(pwd);out.println(用户名为:+username+br);out.println(密码为:+pwd+br);Stringinst[]=request.getParameterValues(inst);//inst传递的是checkbox数组out.print(兴趣为:);for(inti=0;iinst.length;i++)out.println(inst[i]+);%/body/html15/82解决办法一:get请求再次关注中文编码问题JSP和Servlet在获取其他页面提交过来的数据时,如果与这些页面编码(浏览器和服务器的接收和发送数据的编码)不一致,则有可能出现中文乱码。Stringname=(String)request.getParameter(name);name=newString(name.getBytes(“iso-8859-1”),“utf-8”);16/82tomcat/conf/server.xmlConnectorconnectionTimeout=40000port=8080protocol=HTTP/1.1URIEncoding=UTF-8redirectPort=8443/再次关注中文编码问题JSP和Servlet在获取其他页面提交过来的数据时,如果与这些页面编码(浏览器和服务器的接收和发送数据的编码)不一致,则有可能出现中文乱码。request.setCharacterEncoding(gb2312);//request.setCharacterEncoding(utf-8”);Stringusername=(String)request.getParameter(“username”);解决办法二:post请求17/82Post请求:org.springframework.web.filter.CharacterEncodingFilter18/92filterfilter-nameSetCharacterEncoding/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf8/param-value/init-param/filterfilter-mappingfilter-nameSetCharacterEncoding/filter-nameurl-pattern/*/url-pattern/filter-mappingmes=URLEncoder.encode(mes,utf-8);response.sendRedirect(show.jsp?mes=+mes);再次关注中文编码问题如果JSP将数据输出到页面出现中文乱码,解决办法:如果传递中文参数出现乱码,response.setContentType(text/html;charset=gb2312);同一个工程中应当使用同一种中文编码。对,JSP、Servlet等都要一致。19/82修改配置文件web.xmlserver.xmlConnector节点添加userBodyEncodingForURI=“true”20/92request对象的应用【例4-2】应用request对象在页面之间传值,存放和获取非表单数据。核心语句:Stringm_name=request.getParameter(name);Stringm_add=request.getParameter(add);%request.setAttribute(error,很抱歉!您输入的用户名或密码不正确!);%%out.println(“错误提示信息:+request.getAttribute(error));%21/82【例4-3】模拟在线考试系统。22/82模拟在线考试系统request.jsp(主界面)输出单选题页面,题目答完后点击“交卷”,页面跳转到Handle.jsp页面。Handle.jsp(数据处理页面)对提交的数据进行处理,显示测试成绩。23/82request.jsp%@pagecontentType=text/htmlpageEncoding=utf-8%htmlheadmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8titlerequest对象应用模拟在线考试系统/title/headbodystyle=font-size:40px;h3测试题/h3hrformaction=Handle.jspmethod=get1.response对象的setHeader(Stringname,Stringvalue)方法的作用是()。brinputtype=radioname=1value=AA.HTTP文件头brinputtype=radioname=1value=BB.设定指定名字的HTTP文件头的值brinputtype=radioname=1value=CC.指定名字的HTTP文件头是否存在brinputtype=radioname=1value=DD.向客户端发送错误信息()br2.设置session的有效时间(也叫超时时间)的方法是()。brinputtype=radioname=2value=AA.setMaxInactiveInterval(intinterval)brin
本文标题:4JSP内部对象
链接地址:https://www.777doc.com/doc-2924923 .html