关于Jsp里面的几个内置对象

本文介绍JSP中的session内置对象及其使用方法,包括如何创建、设置及获取session值;同时对比了response.sendRedirect与RequestDispatcher在页面跳转方面的区别,并提供了中文乱码处理的方法。

JSp的session内置对象取值方法
//创建session对象
HttpSession session =requst.getSession();
//设置session 对象的属性值
session.setAttribute("属性名",值);
取值
Object object=session.getAttibute("属性名")
设置方法
//设置响应回去的类型
response.setContentType("text/html");
//设置响应的字符编码格式
response.setCharacterEncoding("UTF-8");

request(请求)
//获取请求属性的值
request.getParameter("属性名");
多用于表单提交和URL参数的传递的取值

 JSp内置对象生命周期:
 
out 只在本jsp页面使用  无生命周期
request  生命周期 一次请求
response 生命周期 一次响应
session  生命周期  项目浏览器关闭时,生全周期结束,默认不操作项目超过30分钟生命周期结束
application 生命周期   当开启Tomcat服务器时创建,关闭Tomcat服务器时结束生命周期  (作用:统计服务器访问人数或流量)

 

页面跳转:
response.sendRedirect("admin/one.jsp")  重定向
RequestDispatcher 请求跳转
两者实现的效果相同
二者的区别:
1、
URL 地址的变化用response.sendRedirect时,RequestDi.spatcher不会使URL地址进行变化。
RepuestDispatcher 是服务器端请求机制的跳转
response.sendRedirect 是客户端请求机制的重定向
2、
RequestDispatcher传值通过JSP-Servlet-JSp形式直接传入到下一个JSp页面
response.sendRedirect 传值通过JSP-Servlet-JSP形式,只能够传递到请求机制重定向这之前
3、
如果项目要跳转到另外一个服务器的页面时,用response.sendRedirect进行重定向
4、
我们尽量使用RequestDispatcher方式,因为是服务器响应,所以在web容器执行效率较高


RequestDispatcher什么时候使用呢?
项目中不进行页面的交互跳转的时候,例如一个界面的增、删、改、查,或者相关联同类型模块之间的跳转

response.sendRedirect重定向什么时候使用呢?
无关联的不同模块间跳转使用,例如,用户界面模块跳转到产品信息界面模块

5、
RequestDispatcher基本上认定使用在Servlet里面
response.sendRedirect 用在Servlet和JSP页面较多


重定向传值 只影响request,不影响session的传值

session何时使用?
传值时尽量不要使用session
购物车的实现必须使用session对象

session.removeAttribute("name") 全部删除物品
如果选择性删除?
传入要删除的购物信息主键id值,根据id值支查找集合中的对应信息,然后做集合中的删除操作
for(Product product : list){

    if(deleteid==product.getid()){
           list.remove(product);
}
}
session.setAttribute("gouwu",list)



两种提交方式的乱码处理:

post提交方式乱码处理
中文乱码问题
request.setcharacterEncoding("UTF-8");

处理get方式提交的乱码方式处理
String names=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")

### JSP内置对象的分类与功能 JSP(JavaServer Pages)提供了多个内置对象,这些对象在开发中可以直接使用,无需显式声明或实例化。以下是JSP内置对象的详细分类及其功能: #### 1. 输入输出对象 - **out对象** `out`对象用于向客户端发送文本数据,其类型为`JspWriter`,具有缓冲功能[^4]。通过`out`对象可以将动态生成的内容输出到页面中。例如: ```java out.println("Hello, World!"); ``` 数据首先写入到`JspWriter`的缓冲区中,只有在调用`ServletResponse.getWriter()`方法时才会真正写入到Servlet引擎的缓冲区[^4]。 - **response对象** `response`对象用于向客户端发送HTTP响应信息,包括设置状态码、头信息重定向等操作[^3]。例如: ```java response.sendRedirect("https://example.com"); ``` - **request对象** `request`对象表示客户端的请求信息,包含请求参数、头信息、会话信息等[^3]。例如,读取Cookie信息可以通过以下代码实现: ```java Cookie[] cookies = request.getCookies(); for (Cookie cookie : cookies) { if ("number".equals(cookie.getName())) { String value = cookie.getValue(); break; } } ``` #### 2. 通信控制对象 - **pageContext对象** `pageContext`对象是JSP页面的核心对象之一,封装了当前页面的上下文信息,支持访问其他内置对象以及管理属性的作用域[^2]。例如: ```java pageContext.setAttribute("name", "John Doe", PageContext.SESSION_SCOPE); ``` - **session对象** `session`对象用于维护用户会话信息,存储在服务器端,每个用户都有一个独立的会话[^3]。例如: ```java session.setAttribute("user", "Alice"); ``` - **application对象** `application`对象代表整个Web应用程序的上下文,所有用户的共享数据都可以存储在此对象中。例如: ```java application.setAttribute("appVersion", "1.0"); ``` #### 3. Servlet对象 - **page对象** `page`对象实际上就是当前JSP页面转换后的Servlet实例。它通常用于访问当前页面的成员变量或方法。 - **config对象** `config`对象提供对Servlet配置信息的访问,允许开发者获取初始化参数。例如: ```java String paramValue = config.getInitParameter("maxUploadSize"); ``` #### 4. 错误处理对象 - **exception对象** `exception`对象用于捕获并处理JSP页面中的异常[^3]。它只能在声明了`<%@ page isErrorPage="true" %>`的页面中使用。例如: ```java if (exception != null) { out.println("Error: " + exception.getMessage()); } ``` --- ### JSP内置对象的作用域 JSP内置对象的作用域分为四种: 1. **Page Scope**:仅在当前页面有效,由`pageContext`对象管理。 2. **Request Scope**:在一次请求周期内有效,通常用于转发或包含页面之间传递数据。 3. **Session Scope**:在整个会话期间有效,存储用户特定的信息[^3]。 4. **Application Scope**:在整个Web应用程序生命周期内有效,适用于所有用户共享的数据[^3]。 --- ### 示例代码 以下是一个综合示例,展示如何使用多个内置对象: ```java <%@ page import="java.util.*" %> <% // 设置属性到不同作用域 pageContext.setAttribute("pageAttr", "Page Attribute", PageContext.PAGE_SCOPE); request.setAttribute("requestAttr", "Request Attribute"); session.setAttribute("sessionAttr", "Session Attribute"); application.setAttribute("appAttr", "Application Attribute"); // 输出属性值 out.println("Page Scope Attribute: " + pageContext.getAttribute("pageAttr") + "<br>"); out.println("Request Scope Attribute: " + request.getAttribute("requestAttr") + "<br>"); out.println("Session Scope Attribute: " + session.getAttribute("sessionAttr") + "<br>"); out.println("Application Scope Attribute: " + application.getAttribute("appAttr") + "<br>"); %> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值