JSP基本使用

本文详细介绍了JSP的基本概念、处理流程及生命周期,深入解析了JSP的九大内置对象和基本语法。同时,文章还阐述了如何使用JSTL标签库进行SQL操作,包括引入依赖、在JSP中引入标签库以及使用JSTL标签的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP基本使用

什么是JSP

JSP是Java Server Page的简称,是一种动态网页开发技术。它通过<% %>,<%= %>标签在网页中嵌入java代码。JSP是基于java Servlet Api,因此有许多强大的企业级Api,也因为是这一点,它相比其他同类型的技术,更易于移植到非MS平台。

JSP的处理流程

第一步 用户发送请求到服务器。
第二步 服务器识别出这是一个对JSP页面的请求,将请求交给JSP引擎处理。
第三步 JSP引擎从硬盘中读取JSP文件,将其转化为Servlet类。
第四步 JSP引擎将Servlet类编译成可执行文件,并将请求交给Servlet引擎处理。
第五步 web服务器调用Servlet引擎执行Servlet类,Servlet引擎将执行结果嵌入到响应中。
第六步 web服务器将响应结果返回给浏览器,形成我们所看到的网页。

JSP的生命周期

JSP的生命周期和Servlet的生命周期类似,只是JSP比Servlet多一个编译成Servlet的阶段。

  1. 编译阶段
    将JSP页面编译成Servler类
  2. 初始化阶段
    加载Servlet类,实例化Servlet类,并调用初始化方法
  3. 服务阶段
    调用Servlet类的服务方法
  4. 销毁阶段
    调用销毁方法,并销毁Servlet的实例。

JSP的九大内置对象

  1. request
    request对象是HttpServletRequest接口的实例,用户每次请求一个jsp页面,JSP引擎都会创建一个新的request对象。
  2. response
    response对象是HttpServletResponse接口的实例,JSP引擎创建request对象时就会创建对应的response对象。
  3. session
    session对象是HttpSession类的实例,它可以用于跟踪用户的行为。
  4. application
    application对象包装了ServletContext类的对象,它在jsp页面初始化时创建,随着jsp的销毁而销毁。你可以在application中添加属性,以此达到在多个jsp页面之间共享对象的目的。
  5. out
    out对象是JspWriter类的实例,用于在response对象中写入数据。它会根据页面是否缓存调用不同的实例操作。JspWriter类会抛出IOException,PrintWriter类则不会。
  6. exception
    exception对象中包含了JSP页面抛出的异常信息。
  7. config
    config对象是ServletConfig类的实例,你可以通过这个对象获得JSP或Servlet引擎的初始化参数
  8. pagecontext
    pageContext对象是PageContext 类的实例,用来代表整个JSP页面。你可以用它获得页面信息。
  9. page
    这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。page 对象就是this对象的同义词。

JSP基本语法

JSP声明代码

<%! int i = 0; %> .

JSP脚本代码

<% out.print("hello world"); %>

JSP表达式

<%=(5*9) %>

JSP注释

<%--JSP注释,注释内容不会被发送至浏览器甚至不会被编译--%> 
<!-- HTML注释,通过浏览器查看网页源代码时可以看见注释内容-->

JSP指令

定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等

<%@ page %>
<%@ page contentType="text/xml;charset=UTF-8" language="java" isELIgnored="false" %>
//此处设置页面属性编码为UTF-8,内容为html网页,脚本语言为java,开启el表达式,默认是关闭的

引入标签库的定义,可以是自定义标签

<%@ taglib %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
//此处引入jstl标签库,设置前缀为c

包含其他文件

<%@ include %>

使用JSTL标签库

第一步 引入依赖

    <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp.jstl</groupId>
                    <artifactId>jstl-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        //由于tomcat7是兼容j2ee 3.0规范的,所以我们将jstl 依赖的东西给去除掉,防止和tomcat自身的servlet jar包冲突.

第二步 在JSP中引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
//前缀可以自定义

第三步 使用JSTL标签

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.study.bean.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<%
        List<User> list=new ArrayList();
        list.add(new User("admin","123456"));
        list.add(new User("system","789654"));
        list.add(new User("super","46546465"));
        session.setAttribute("list",list);
%>
<table border="1px solid black">
        <thead>
               <tr>
                       <th>username</th>
                       <th>password</th>
               </tr>
        </thead>
        <tbody>
                <c:forEach items="${list}" var="user">
                        <tr>
                                <td>${user.name}</td>
                                <td>${user.password}</td>
                        </tr>
                </c:forEach>

        </tbody>
</table>
</body>
</html>

JSTL标签库还提供了sql标签支持SQL操作,下面是查询的例子

在JSP引入sql标签

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

查询user表

<%@ page import="java.sql.ResultSet" %>
<%@ page import="org.apache.taglibs.standard.tag.common.sql.ResultImpl"%>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.study.bean.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<html>
<body>
<sql:setDataSource driver="com.mysql.cj.jdbc.Driver" user="root" password="root" url="jdbc:mysql://localhost:3306/mybatistest?characterEncoding=utf8&useSSL=true&serverTimezone=UTC" scope="application" var="test"></sql:setDataSource>

<sql:query var="res" sql="select * from user" dataSource="${test}" scope="session"></sql:query>

<table border="1px solid black">
        <thead>
               <tr>
             		   <th>id</th>
                       <th>name</th>
                       <th>sign</th>
               </tr>
        </thead>
        <tbody>
                <c:forEach items="${res.rows}" var="user">
                        <tr>
								<td>${user.id}</td>
                                <td>${user.name}</td>
                                <td>${user.sign}</td>
                        </tr>
                </c:forEach>
        </tbody>
</table>
</body>
</html>
1. 用户与权限管理模块 角色管理: 学生:查看实验室信息、预约设备、提交耗材申请、参与安全考核 教师:管理课题组预约、审批学生耗材申请、查看本课题组使用记录 管理员:设备全生命周期管理、审核预约、耗材采购与分发、安全检查 用户操作: 登录认证:统一身份认证(对接学号 / 工号系统,模拟实现),支持密码重置 信息管理:学生 / 教师维护个人信息(联系方式、所属院系),管理员管理所有用户 权限控制:不同角色仅可见对应功能(如学生不可删除设备信息) 2. 实验室与设备管理模块 实验室信息管理: 基础信息:实验室编号、名称、位置、容纳人数、开放时间、负责人 功能分类:按学科(计算机实验室 / 电子实验室 / 化学实验室)标记,关联可开展实验类型 状态展示:实时显示当前使用人数、设备运行状态(正常 / 故障) 设备管理: 设备档案:名称、型号、规格、购置日期、单价、生产厂家、存放位置、责任人 全生命周期管理: 入库登记:管理员录入新设备信息,生成唯一资产编号 维护记录:记录维修、校准、保养信息(时间、内容、执行人) 报废处理:登记报废原因、时间,更新设备状态为 "已报废" 设备查询:支持按名称、型号、状态多条件检索,显示设备当前可用情况 3. 预约与使用模块 预约管理: 预约规则:学生可预约未来 7 天内的设备 / 实验室,单次最长 4 小时(可设置) 预约流程:选择实验室→选择设备→选择时间段→提交申请(需填写实验目的) 审核机制:普通实验自动通过,高危实验(如化学实验)需教师审核 使用记录: 签到 / 签退:到达实验室后扫码签到,离开时签退,系统自动记录实际使用时长 使用登记:填写实验内容、设备运行情况(正常 / 异常),异常情况需详细描述 违规管理:迟到 15 分钟自动取消预约,多次违规限制预约权限 4. 耗材与安全管理模块 耗材管理: 耗材档案:名称、规格、数量、存放位置、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值