JSP学习(二) --------- 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联合调用案例

开发步骤

  1. Servlet 与 JSP 分工
  • Servlet : 负责处理业务并得到处理结果
  • JSP :不负责业务处理,主要任务将Servlet中处理结果写入到响应体
  1. Servlet 与 JSP之间调用关系
  • Servlet工作完毕后,一般通过请求转发方式 向Tomcat申请调用JSP
  1. 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" %>
<%
  List<Student> stuList = (List)request.getAttribute("list");
%>
<table border="2", align="center">
  <tr>
    <td>学生编号</td>
    <td>学生姓名</td>
  </tr>
  <%
     for(Student stu:stuList)  {
  %>
     <tr>
       <td><%=stu.getStuId()%></td>
       <td><%=stu.getName()%></td>
     </tr>
  <%
    }
  %>
</table>

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在森林中麋了鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值