本文共 7092 字,大约阅读时间需要 23 分钟。
Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。
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 登录成功
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+"/";%>测试URL传参数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); %>
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.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_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将会创建新的会话相当于静态变量(全局)
setAttribute方法参数第一个为字符串,第二个参数为需要保存的对象 使用application 实现计数器效果,在application中保存整型变量num,setAttribute(”counter”,num);
当前page页面对象的字符串描述:<%=page.toString() %>
结果:当前page页面对象的字符串描述:org.apache.jsp.page_jsp@32ac7d17
forward使当前页面跳转到另一个页面,地址栏不会放生变化,有点类似于请求转发。
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()%>