博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二、JSP之JSP内置对象
阅读量:3698 次
发布时间:2019-05-21

本文共 7092 字,大约阅读时间需要 23 分钟。

一、JSP内置对象简介

Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。

  • out
  • request
  • response
  • session
  • application
  • Page pageContext exception config

二、out对象

这里写图片描述


三、提交表单的方式

这里写图片描述

login.jsp :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    My JSP 'login.jsp' starting page

用户登录


用户名:
密码:

dologin.jsp :

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'dologin.jsp' starting page    

登录成功



四、request对象

这里写图片描述

这里写图片描述

reg.jsp :

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

用户注册


<% int number=-1; //说明用户第一次访问页面,计数器对象还未创建 if(application.getAttribute("counter")==null) { application.setAttribute("counter", 0); } number = Integer.parseInt(application.getAttribute("counter").toString()); number++; application.setAttribute("counter", number); %>
用户名:
爱好: 读书 音乐 电影 上网
测试URL传参数
您是第<%=number %>位访问本页面的用户。

request.jsp :

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

request内置对象

<% request.setCharacterEncoding("utf-8"); //解决中文乱码问题,无法解决URL传递中文出现的乱码问题。// 解决URL传递中文出现的乱码: 在server.xml中的Connector标签下设置URIEncoding="utf-8" request.setAttribute("password", "123456"); %> 用户名:<%=request.getParameter("username") %>
爱好 :<% if(request.getParameterValues("favorite")!=null) { String[] favorites = request.getParameterValues("favorite"); for(int i=0;i
密码:<%=request.getAttribute("password") %>
请求体的MIME类型:<%=request.getContentType() %>
协议类型及版本号: <%=request.getProtocol() %>
服务器主机名 :<%=request.getServerName() %>
服务器端口号:<%=request.getServerPort() %>
请求文件的长度 :<%=request.getContentLength() %>
请求客户端的IP地址:<%=request.getRemoteAddr() %>
请求的真实路径:<%=request.getRealPath("request.jsp") %>
请求的上下文路径:<%=request.getContextPath() %>

五、response对象

这里写图片描述

response.jsp :

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%><%    response.setContentType("text/html;charset=utf-8"); //设置响应的MIMI类型    out.println("

response内置对象

"); out.println("

"); //out.flush(); PrintWriter outer = response.getWriter(); //获得输出流对象 outer.println("大家好,我是response对象生成的输出流outer对象"); //如果不用out.flush(),那么PrintWriter输出的结果总是提前于内置对象的输出// response.sendRedirect("reg.jsp");//请求重定向 //请求重定向 //response.sendRedirect("request.jsp"); //请求转发 request.getRequestDispatcher("request.jsp").forward(request, response);%>

六、请求转发与请求重定向

请求重定向是客户器端行为而请求转发是服务器端行为

这里写图片描述


七、session对象

这里写图片描述

这里写图片描述

session_page1.jsp :

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

session内置对象


<% SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date d = new Date(session.getCreationTime()); session.setAttribute("username", "admin"); session.setAttribute("password", "123456"); session.setAttribute("age", 20); //设置当前session最大生成期限单位是秒 //session.setMaxInactiveInterval(10);//10秒钟 %> Session创建时间:<%=sdf.format(d)%>
Session的ID编号:<%=session.getId()%>
从Session中获取用户名:<%=session.getAttribute("username") %>
<%--target="_blank"表示打开新窗口--%> 跳转到Session_page2.jsp

session_page2.jsp :

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

session内置对象


<% //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //Date d = new Date(session.getCreationTime()); //session.setAttribute("username", "admin"); %> Session的ID编号:<%=session.getId()%>
从Session中获取用户名:<%=session.getAttribute("username") %>
Session中保存的属性有:<% String[] names =session.getValueNames(); for(int i=0;i

浏览器不关闭,服务器就会保存用户sessions状态,多个页面可属于同一个session会话。

会话保存在服务器的内存里,保存着不同的用户的session。
本次会话的所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话

这里写图片描述

这里写图片描述


八、application对象

这里写图片描述

相当于静态变量(全局)

这里写图片描述

setAttribute方法参数第一个为字符串,第二个参数为需要保存的对象
使用application 实现计数器效果,在application中保存整型变量num,setAttribute(”counter”,num);


九、page对象

这里写图片描述

当前page页面对象的字符串描述:<%=page.toString() %>
结果:当前page页面对象的字符串描述:org.apache.jsp.page_jsp@32ac7d17

十、pageContext对象和config对象

这里写图片描述

forward使当前页面跳转到另一个页面,地址栏不会放生变化,有点类似于请求转发。

这里写图片描述


十一、exception对象

这里写图片描述

errorPage: 指定异常页面,当发生异常时交由其处理

isErrorPage:设置该页面为处理异常的页面
当异常发生时,会跳转到异常处理页面,地址栏不会发生变化,相当于请求转发。

exception_test.jsp:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" errorPage="exception.jsp"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

测试异常的页面


<% System.out.println(100/0); //抛出运行时异常,算数异常 %>

exception.jsp:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" isErrorPage="true" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

exception内置对象


异常的消息是:<%=exception.getMessage()%>
异常的字符串描述:<%=exception.toString()%>
你可能感兴趣的文章
ACM日记
查看>>
Acm日记
查看>>
ACM知识----线段树
查看>>
ACM知识---树状数组
查看>>
数据结构---字符串
查看>>
ACM---日记
查看>>
ACM日记
查看>>
ACM日记
查看>>
ACM日记
查看>>
ACM日记
查看>>
机器学习——决策树和随机森林
查看>>
机器学习——提升
查看>>
机器学习——SVM
查看>>
机器学习——贝叶斯网络
查看>>
机器学习——主题模型
查看>>
机器学习——HMM
查看>>
机器学习PYTHON实践
查看>>
深度学习(一)——总体介绍
查看>>
深度学习(二)——传统神经网络
查看>>
深度学习(三)——卷积神经网络
查看>>