- 一、JSP内置对象
- 二、JSP与Servlet联合调用案例
- 开发步骤
- 实例
一、JSP内置对象
内置对象:
- 由JSP规范提供,不用编写者实例化。
- 通过Web容器实现和管理
- 所有JSP页面均可使用
- 只有在JSP程序段或JSP表达式 (<%= %>或<% %>) 中
1. request 对象
- 类型: javax.servlet.HttpServletRequest 类型对象
- 作用:在JSP文件运行时读取请求包信息,与Servlet在请求转发过程中实现数据共享
- 作用域:只在一次请求中有效,服务器跳转之后有效。
- 常用方法有:
1. getAttribute() 返回指定属性值 2. getAttributeNames() 返回所有可用属性名的枚举 3. getCharacterEncoding() 返回字符编码方式 4. getParameter() 返回指定参数的参数值 5. getParameterNames() 返回可用参数名的枚举 6. getProtocol() 返回请求用的协议类型及版本号 7. setAttribute() 设置属性的属性值
2. response 对象
- 类型:javax.servlet.HttpServletResponse类型对象
- 作用:代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端
- 作用域:只在JSP页面中有效
- 常用方法:
1. getWriter() 返回可以向客户端输出字符的一个对象 2. setContentType(String type) 设置响应的MIME类型 3. sendRedirect(location) 重新定向客户端的请求
3. session 对象
- 类型:javax.servlet.http.HttpSession类型对象
- 作用:服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态,添加共享数据,读取共享数据。
- 作用域:在一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效。
- 常用方法:
1. getAttribute() 获取指定共享数据的属性值 2. setAttribute() 设置共享数据的属性值
4. application 对象
- 类型:javax.servlet.ServletContext类型对象
- 作用:表示所有用户的共享信息,同一个网站中Servlet与JSP,都可以通过当前网站的全局作用域对象实现数据共享
- 作用域:在整个服务器上保存,所有用户都可使用。 重启服务器后无效
- 常用方法:
1 .getAttribute() 返回给定名的属性值 2. setAttribute() 设定属性的属性值 3. removeAttribute() 删除一属性及其属性值 4. getServlet() 返回指定名的Servlet 5. getRequestDispatcher() 返回指定资源的RequestDispatcher对象 6. getResource() 返回指定资源(文件及目录)的URL路径二、JSP与Servlet联合调用案例 开发步骤
- Servlet 与 JSP 分工
- Servlet : 负责处理业务并得到处理结果
- JSP :不负责业务处理,主要任务将Servlet中处理结果写入到响应体
- Servlet 与 JSP之间调用关系
- Servlet工作完毕后,一般通过请求转发方式 向Tomcat申请调用JSP
- Servlet 与 JSP 之间如何实现数据共享
-
Servlet将处理结果添加到请求作用域对象
-
JSP文件在运行时从请求作用域对象得到处理结果
创建学生类,在Servlet下创建学生对象,并在JSP中将学生对象信息输出到网页中
package Entity;
public class Student {
int stuId;
String name;
public Student(int stuId, String name) {
this.stuId = stuId;
this.name = name;
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package Controller;
import Entity.Student;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "MyServlet", value = "/MyServlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student s1 = new Student(1, "Mike");;
Student s2 = new Student(2, "Helen");
List stuList = new ArrayList();
stuList.add(s1);
stuList.add(s2);
request.setAttribute("list", stuList);
request.getRequestDispatcher("/StuInformation.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
<%@ page import="Entity.Student" %> <%@ page import="java.util.List" %><%-- Created by IntelliJ IDEA. User: 繁花fancy Date: 2021/11/11 Time: 16:36 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% ListstuList = (List)request.getAttribute("list"); %>
<% for(Student stu:stuList) { %> 学生编号 学生姓名 <% } %> <%=stu.getStuId()%> <%=stu.getName()%>



