JSP内置对象(上)



在JSP中为了简化页面的开发提供了一些内置的对象。这些对象不需要由JSP的编写者通过new关键字实例化,他们都由容器实现和管理,在所有的JSP页面中都可以使用内置对象。

JSP中共有9大内置对象:

  1. out对象
  2. requset对象
  3. response对象
  4. session对象
  5. pageContext对象
  6. application对象
  7. config对象
  8. page对象
  9. exception对象

JSP内置对象(下):http://wxmimperio.coding.io/?p=329

PS:

【web对象的请求响应模式】

1.用户从客户端发送HTTP请求(request)到web服务器端

2.服务器给用户做相应的HTTP响应(response)返回客户端

【表单提交的两种方式:get and post】

1.get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2kb。安全性比较低但效率比post方式高,适合提交数据量不大,安全性不高的数据。比如:搜索、查询

2.post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。比如:注册、修改、上传


1.out对象

out对象被封装成javax.servlet.jsp.JspWriter接口,主要用来向客户端输出数据,代表输出流的对象。

常用的方法:

  • out.print()、out.println():向客户端打印字符串
  • out.clear():清除缓冲区里的数据,但不会把数据输出到客户端,如果在flush之后调用会抛出异常
  • out.flush():输出缓冲区里的数据
  • out.clearBuffer():清除缓冲区里的数据,并把数据输出到客户端,如果在flush之后调用不会抛出异常
  • out.getBufferSize():获得缓冲区大小
  • out.getRemaining():获得缓冲区剩余空间大小
  • out.close():关闭输出流
  • out.isAutoFlush():返回布尔值,判断是否为自动清除缓存

代码:

  • <body>
  • println方法:<%out.println("打印输出");%><br>
  • getBufferSize方法:缓冲区大小=<%=out.getBufferSize()%><br>
  • getRemaining方法:缓冲区剩余大小=<%=out.getRemaining()%><br>
  • isAutoFlush方法:是否自动清除缓冲区:<%=out.isAutoFlush()%><br>
  • clear方法:<%out.close();%><br>
  • <%--
  • clearBuffer方法:<%out.clearBuffer();%><br>
  • flush方法:<%out.flush();%><br>
  • close方法:<%out.close();%><br>
  • --%>
  • </body>

2.request对象

request对象代表请求对象,他被封装成HttpServletRequest接口。通过getParameter方法可以得到requset的参数,通过get、post、head等方法可以得到request的类型,通过Cookies、Referer等可以得到请求的HTTP头。来自客户端的请求经Servlet容器处理后,有request对象进行封装,他作为jspServlet()方法的一个参数由容器传递给JSP页面。

常用的方法:

  • getParamter(String name):获得客户端传给服务器端的参数值,参数由name指定
  • getParameterValues(String name):获得指定参数的所有值,参数由name指定
  • getProtocol():获取客户端向服务器端传送数据所依据的协议类型及版本号
  • getServerName():获取服务器的名字
  • getServerPath():获取客户端所请求的脚本文件的路径
  • getServerPort():获取服务器的端口号
  • getContentLength():返回请求的长度,如果长度不确定,返回-1
  • getCharacterEncoding():返回请求中的编码方式
  • getLocalAddr():返回接收到请求的网络接口的IP地址,这个方法是在Servlet 2.4规范中新增的方法
  • getLocalName():返回接收到请求的IP接口的主机名,这个方法是在Servlet 2.4规范中新增的方法
  • setAttribute(String name,java.lang.Object objt):储存此请求中的属性
  • getAttribute(String name):返回由name指定的属性,如果此属性不存在,则返回一个null值

代码:

requestForm.jsp

  • <form name="requsetFrom" action="requestObject.jsp" method="post">
  • <table>
  • <tr>
  • <td>用户名:</td>
  • <td><input type="text" name="username"></td>
  • </tr>
  • <tr>
  • <td>兴趣:</td>
  • <td>
  • <input type="checkbox" name="favorite" value="basketball">篮球
  • <input type="checkbox" name="favorite" value="music">音乐
  • <input type="checkbox" name="favorite" value="football">足球
  • </td>
  • </tr>
  • <tr>
  • <td><input type="submit" value="提交"></td>
  • </tr>
  • </table>
  • </form>

requestObject.jsp

  • <body>
  • <%
  • /*解决中文乱码问题,但不能解决用URL传递中文的乱码*/
  • request.setCharacterEncoding("utf-8");
  • /*调用setAttribute方法*/
  • request.setAttribute("password","123456789");
  • %>
  • 用户名:<%=request.getParameter("username")%><br>
  • 兴趣:
  • <%
  • if(request.getParameterValues("favorite") != null) {
  • String[] favorites = request.getParameterValues("favorite");
  • for(int i=0;i<favorites.length;i++) {
  • out.println(favorites[i]+"&nbsp;&nbsp;");
  • }
  • }
  • %><br>
  • 服务器版本号:<%=request.getProtocol()%><br>
  • 服务器名字:<%=request.getServerName()%><br>
  • 客户端请求的文件路径:<%=request.getServletPath()%><br>
  • 服务器端口号:<%=request.getServerPort()%><br>
  • 请求长度:<%=request.getContentLength()%><br>
  • 请求中编码方式:<%=request.getCharacterEncoding()%><br>
  • 请求中网络接口的IP:<%=request.getLocalAddr()%><br>
  • 请求中的主机名:<%=request.getLocalName()%><br>
  • 获取指定属性:<%=request.getAttribute("password")%><br>
  • </body>


3.response对象

response被包装成HttpServletResponse接口,他封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。和request对象一样,他由容器生成,作为jspService()方法的参数被传入JSP。他具有页面作用域,即访问一个页面时,该页面的response对象只能对该页面有效,其他页面的response对象对当前页面无效。

常用的方法:

  • flushBuffer():强制把当前缓冲区的内容发送到客户端
  • getBufferSize():返回缓冲区大小
  • addCookie(Cookie cook):添加一个Cookie对象,用来保存客户端信息
  • sendError(int):向客户端发送错误的信息
  • sendRedirect(String location):把响应发送到另一个位置进行处理
  • setContentType(String ContentType):设置响应的MIME类型
  • getWriter():返回一个可以向客户端输出字符的对象
  • getCharacterEncoding():返回响应所用的编码类型

PS:

【请求重定向】

客户端行为,response.sendRedirect(),从本质上讲等同于发出两次请求,前一次请求对象不会被保存,地址栏的URL地址会发生改变

【请求转发】

服务器行为,requset.getRequestDispatcher().forward(request,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会发生变化

代码:

  • <body>
  • 缓冲区大小=<%=response.getBufferSize()%><br>
  • <%--错误=<%response.sendError(404);%><br>--%>
  • 响应的编码类型=<%=response.getCharacterEncoding()%><br>
  • <%
  • response.setContentType("text/html;charset=utf-8");//设置响应的MIME类型
  • /*response生成的输出流优先级高于内置对象out,先进行打印输出*/
  • PrintWriter outer = response.getWriter();//获得输出流
  • outer.println("response生成的输出流<br>");
  • /*使用了一个Cookie,每次访问此页面时,就通过requset对象把客户端的所有Cookie获取过来*/
  • Cookie[] cookies = request.getCookies();
  • Cookie cookie_response = null;
  • List list = Arrays.asList(cookies);
  • Iterator it = list.iterator();
  • while (it.hasNext()) {
  • Cookie temp = (Cookie)it.next();
  • if(temp.getName().equals("_access_time")); {
  • cookie_response = temp;
  • break;
  • }
  • }
  • if(cookie_response != null) {
  • outer.println("访问时间="+cookie_response.getValue()+"<br>");
  • cookie_response.setValue(new Date().toString());
  • } else {
  • cookie_response = new Cookie("_access_time",new java.util.Date().toString());
  • }
  • response.addCookie(cookie_response);
  • response.flushBuffer();
  • %>
  • </body>

4.session对象

session对象用来保存每个用户信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器中,session的ID保存在客户端的Cookie中。session表示客户端与服务器的一次会话,web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间他表示特定的一段时间,在服务器内存中保存着不同用户的session,session对象在第一个jsp页面被装载时自动创建,完成回话管理。

【生命周期】

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开服务器结束,称为一个会话。当一个用户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。session对象是HttpSession类的一个实例.

创建:

当客户端第一次访问某个jsp或者servlet时候,服务器会为当前回话创建一个SessionId,每次酷虎段想服务器发送请求时,都会将此SessionId携带过去,服务器会对此SessionId进行校验

活动:

某次回话当中通过超链接打开的新页面属于同一次会话,只要当前回话页面乜有全部关闭,重新打开新的浏览器窗口访问同一个项目资源时属于同一次会话,除非本次会话的所有页面都关闭,再新访问某个jsp或者servlet将会创建新的会话,旧的会话还在,只是这个旧的sessionID仍然存在服务器端,只不过再也没有客户端会携带它然后然后交给服务器端校验。

销毁:

调用session. invalidate()方法、Session过期、服务器重启(Tomcat默认超时时间是30分钟)

web.xml配置销毁时间(分钟):

<session-config>

<session-timeout>10</session-timeout>

</session-config>

常用的方法:

  • getCreationTime():返回session被创建的时间,最小单位为千分之秒
  • getId():返回每个session不同的唯一标识
  • getMaxInactiveInterval():返回两次请求之间session销毁的时间,负值表示永远不会超时
  • invalidate():销毁这个session对象
  • getAttributeNames():返回session对象中储存的每一个属性对象,结果为一个枚举类的实例
  • getAttribute(String name):获取指定名字name相联系的属性
  • setAttribute(String name,java.lang.Object value):设置指定名字name的属性值value,并储存在session中

代码:

  • <body>
  • <%
  • //格式化日期
  • SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  • Date date = new Date(session.getCreationTime());
  • session.setAttribute("username","admin");
  • session.setAttribute("password","123456");
  • //设置当前session的生命为10秒钟
  • session.setMaxInactiveInterval(10);
  • %>
  • session创建的时间=<%=sdf.format(date)%><br>
  • session的ID=<%=session.getId()%><br>
  • 从session中获取=<%=session.getAttribute("username")%><br>
  • 从session获得所有属性=
  • <%
  • Enumeration e = session.getAttributeNames();
  • while (e.hasMoreElements()) {
  • out.println(e.nextElement()+"&nbsp;&nbsp;");
  • }
  • /*session.invalidate();*/
  • %><br>
  • </body>


参考:JSP应用开发详解(第三版)、慕课网

时间: 2024-10-19 23:29:06

JSP内置对象(上)的相关文章

【JavaWeb】学习笔记五 JSP内置对象(上)

1.常用的JSP内置对象 2.out对象 out对象是JspWriter类的实例,是向客户端输出内容常用的对象 编号 方法 说明 1 void clear() 清除缓冲区的内容 2 void clearBuffer() 清除缓冲区的当前内容 3 void flush() 清空流 4 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0 5 int getRemaining() 返回缓冲区还剩余多少可用 6 boolean isAutoFlush() 返回缓冲区满时

JAVA遇见HTML——JSP篇(JSP内置对象上)

action:表单交给哪个动作去处理 上下文路径默认的就是项目的虚拟路径 这个问题要解决我们需要配置tomcat服务器,需要修改tomcat服务器配置文档server.xml 修改完这个配置文档,tomcat服务器需要重启,否则不会生效 例如: 测试1: 测试结果: 测试2: 测试结果: 原文地址:https://www.cnblogs.com/songsongblue/p/9751761.html

【转】JSP内置对象详细介绍(上)

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

JSP内置对象详细介绍(上)&lt;转载&gt;

第一个问题: JSP有多少类内置对象? 要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握.主要有九个 内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象. 第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢? (1)application对象:javax.servlet.ServletContext

jsp 内置对象(五)

1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理.首先,将获取的 字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象 即可.如下: String textContent=request.getParameter("boy") byte b[]=textContent.get

JSP内置对象详解

jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request:是javax.servlet.httpservletRequest类型的对象,该对象是用户客户端的请求信息,主要用户接受客户端通过http协议传送到服务器的数据! (包括头部信息.系统信息.请求方式以及请求信息参数),jsp内置对象Web容器所创建的一组对象! 生命周期:jsp发出请求一个requ

尴尬!Jsp内置对象

今天挺尴尬的,上网络安全课做错了ppt ,尴尬到头皮发麻. JSP内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关就可以使用的内置对象. <%int[ ]value= {60,70,80 };for (int i: value) {out.println(i);%> WEB程序的请求响应模式,用户发送请求,服务器给用户响应

JSP内置对象—session

什么是session? session对象是用来在每一个用户之间分别保存每一个用户信息的对象,以便跟踪用户的操作状态.session的信息保存在服务器端,session的id保存在客户端的cookie中. 例如我们乘坐火车就可以看做是一个session.当我们乘坐火车的时候,我们需要持有一张车票.车票就相当于是一个cookie.而车票上的座位号就相当于是sessionId.当我们需要访问列车的时候,检票员会事先检查我们是否持有cookie,如果有就根据cookie里的内容(sessionId)

JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次都要先创建这些对象,然后再去使用它们,这样就显得十分繁琐了,为了方便使用者,Sun公司在开发JSP的时候,把一些对象设置为内置对象,开发者在JSP页面编程的时候不必声明这些对象就能直接使用,这就是JSP的内置对象. 那么JSP对象有哪些呢? JSP内置对象          对应的类型   备注 R