JSP知识点总结

jsp九大对象

在jsp中内置了9个对象,无需创建该对象即可使用。其名称为固定名称。

1.out输出对象 - 属于JspWriter

print(): 输出
flush(): 刷新
close(): 关闭

2.request请求对象 - 属于HttpServletRequest

getParameter(): 获取请求的参数
setCharacterEncoding(""):设置请求的编码
getRemoteAddr():获取远程访问者的ip
getMethod():获取请求方式
getSession():获取session对象

3.response响应对象 - 属于HttpServletReponse

//重定向即重新跳转的路径
sendRedirect(""):重定向
getWriter(): 获取out对象

4.session会话对象 - 属于HttpSession

setAttribute()
getAttribute()
removeAttribute()

5.page对象:页面对象,每个jsp网页都存在该对象。 可以理解为this,指向该jsp文件。

6.application对象:应用对象。 它里面也可以保存数据。 生命周期:只要服务器不关闭,该对象中数据一直存在。

7.pageContext: 网页上下文对象,通过该对象可以获取其他8个对象。

getRequest():获取请求对象
getResponse():获取响应对象

8.config对象: 该对象可以获取web.xml配置文件中的参数。 

9.exception: 异常对象,该对象必须在错误页面才会存在。

 

跳转方式 

第一种:重定向redirect。

第二种:请求转发forward。

重定向:地址栏会发生改变,而且会生成一个新的请求对象。

请求转发:地址栏不会改变,而且不会生成新的请求对象。

request.getRequestDispatcher("/b.jsp").forward(request,response);//转发跳转

(请求转发更加节省内存。)

jsp四大作用域对象

在jsp中存在四个对象用来保存客户的数据,它们的保存周期各不相同。

  • pageContext: 当前网页有效。
  • request: 同一请求有效。
  • session: 同一个会话有效,保存当前用户信息。
  • application: 同一个应用有效。

setAttribute(key, value):保存数据

getAttribute(key):获取数据

removeAttribute(key):移除数据

保存周期越长,占用的内存时间越长。

EL表达式

EL表达式可以获取上面四个域对象中的数据。但是它的语法更为简洁,无需使用<% %>。

语法:${scope.key}:获取指定域中的key值。

简写:${key}:默认从pageContext扫描,如果找到对应的key,则停止扫描。 如果没有找到key,则扫描request。

jstl标签库

该标签库提供了大量的标签,这些标签可以完成对应的功能。 例如:if、for、redirect,用于替换java代码。

使用:需要导入对应的jar包

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/12/5
  Time: 11:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setAttribute("age", 17);//存放数据到request中
    String[] str = {"玩游戏", "看电影", "唱歌", "打篮球"};
    request.setAttribute("hobbys", str);
%>

<%--jstl可以结合el表达式--%>
<c:if test="${age>=18}">
    <h3>成年</h3>
</c:if>
<c:if test="${age<18}">
    <h3>未成年</h3>
</c:if>

<hr>

<ul>
    <%--items:表示要变量的对象  var:每次变量把元素赋值的变量名。--%>
    <c:forEach items="${hobbys}" var="h">
        <li>${h}</li>
    </c:forEach>
</ul>

</body>
</html>

 servlet

在java中,Servlet是用于创建动态Web内容的服务器端组件。Servlet运行在Tomcat服务器上,可以响应客户端(通常是web浏览器)发出的请求。Servlet的生命周期由服务器管理,主要包括初始化、请求处理和销毁三个阶段。

Servlet是一种Java类,它实现了javax.servlet.Servlet接口。Servlet主要用于处理HTTP请求和生成HTTP响应,可以用于创建动态网页、处理表单数据、管理会话等。

使用servlet

1.创建一个类并继承HttpServlet:

//创建一个类并继承HttpServlet
public class HelloServlet extends HttpServlet {
    //重写方法:
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }
}

2.第二步:在web.xml中注册servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
   <!--注册指定的servlet类:该类交于tomcat容器管理-->
    <servlet>
        <servlet-name>a</servlet-name>
        <servlet-class>com.ykq.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--请求路径要和servlet映射在一起-->
    <servlet-mapping>
        <servlet-name>a</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
</web-app>

3.第三步:浏览器发送请求

http://localhost:8080/hello

简写方式

使用注解:

@WebServlet(name = "", urlPatterns = ""),其中name可以省略不写,urlPatterns为请求路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929637.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序全屏显示地图

微信小程序在界面上显示地图&#xff0c;只需要用map标签 <map longitude"经度度数" latitude"纬度度数"></map>例如北京的经纬度为&#xff1a;116.407004,39.904595 <map class"bgMap" longitude"116.407004" lati…

(软件测试文档大全)测试计划,测试报告,测试方案,压力测试报告,性能测试,等保测评,安全扫描测试,日常运维检查测试,功能测试等全下载

1. 引言 1.1. 编写目的 1.2. 项目背景 1.3. 读者对象 1.4. 参考资料 1.5. 术语与缩略语 2. 测试策略 2.1. 测试完成标准 2.2. 测试类型 2.2.1. 功能测试 2.2.2. 性能测试 2.2.3. 安全性与访问控制测试 2.3. 测试工具 3. 测试技术 4. 测试资源 4.1. 人员安排 4.2. 测试环境 4.2.…

2024 阿里云Debian12.8安装apach2【图文讲解】

1. 更新系统&#xff0c;确保您的系统软件包是最新的 sudo apt update sudo apt upgrade -y 2. 安装 Apache Web 服务器 apt install apache2 -y 3. 安装 PHP 及常用的扩展 apt install php libapache2-mod-php -y apt install php-mysql php-xml php-mbstring php-curl php…

golang实现单例日志对象

原文地址&#xff1a;golang实现单例日志对象 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 介绍 golang有很多日志包&#xff0c;通过设置和修改都能实现日志轮转和自定义日志格式。例如&#xff1a;log、zap、golog、slog、log4go 等等。 …

git回退到某个版本git checkout和git reset命令的区别

文章目录 1. git checkout <commit>2. git reset --hard <commit>两者的区别总结推荐使用场景* 在使用 Git 回退到某个版本时&#xff0c; git checkout <commit> 和 git reset --hard <commit> 是两种常见的方式&#xff0c;但它们的用途和影响有很…

Spring Boot + MySQL 多线程查询与联表查询性能对比分析

Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中&#xff0c;数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长&#xff0c;单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中&#xff0…

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

接触人工智能的学习三个月了&#xff0c;每天与各种安装包作斗争&#xff0c;缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装&#xff0c;是时候总结一下踩过的坑和积累的经验了。 以一个典型的…

Vue工程化开发中各文件的作用

1.main.js文件 main.js文件的主要作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html。

本地运行打包好的dist

首先输入打包命令 每个人设置不一样 一般人 是npm run build如果不知道可以去package.json里去看。 打包好文件如下 命令行输入 :npm i -g http-server 进入到dist目录下输入 命令cmd 输入 http-server 成功

华为HCIE-Datacom认证笔试+实验考试介绍

华为HCIE数通认证考试是面向那些希望成为数通网络领域专家的人员&#xff0c;考试通常两部分&#xff1a;笔试和实验考试。 考试科目&#xff1a; HCIE-Datacom笔试考试内容&#xff1a; HCIE-Datacom V1.0考试覆盖数据通信领域路由交换高阶技术、企业网络架构全景、园区网络…

【组件封装】uniapp vue3 封装一个完整的Tabs(标签页)组件教程,功能由简到杂实现讲解。

文章目录 前言一、简单版Tabs代码实现&#xff1a; 二、下划线带动画的TabsAPI回顾&#xff1a;代码实现&#xff1a; 三、内容区域滑动切换切换动画代码实现&#xff1a;&#xff08;2&#xff09;禁用手势滑动切换&#xff08;3&#xff09;内容区域换为插槽 四、标签栏可滚动…

相对路径和绝对路径与链接标签

一.相对路径 相对路径&#xff1a;以引用文件所在位置为参考基础&#xff0c;而建立出的目录路径。 即图片相对于你写的html页面的位置 相对路径分类符号说明同一级路径图片与html文件处于同一级&#xff0c;如<img src"baidu.gif">下一级路径/图片位于html…

【Java】Switch语句、循环语句(for、while、do...while)

Switch语句&#xff1a;针对某个表达式的值进行判断&#xff0c;从而决定执行哪一段代码 语法格式&#xff1a; switch(表达式){ case 目标值1: 执行语句1 break; case 目标值2: …

P3916 图的遍历(Tarjan缩点和反向建边)

P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一&#xff1a;Tarjan 思路&#xff1a;先运用Tarjan算法得到每个连通块中最大的编号&#xff0c;然后对每个连通块进行缩点重新建图&#xff0c;进行dfs&#xff0c;得到缩点后的连通块能够达到的最大编号。 Code: conste…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现&#xff1a; 2023 年开年&#xff0c;ChatGPT 作为一款聊天型AI工具&#xff0c;成为了超越疫情的热门词条&#xff1b;而在AI的另一个分支——绘图领域&#xff0c;一款名为Midjourney&#xff08;MJ&#xff…

同为科技(TOWE)柔性定制化PDU插座

随着科技的进步&#xff0c;越来越多的精密电子设备&#xff0c;成为工作生活密不可分的工具。 电子电气设备的用电环境也变得更为复杂&#xff0c;所以安全稳定的供电是电子电气设备的生命线。 插座插排作为电子电气设备最后十米范围内供配电最终核心部分&#xff0c;便捷、安…

GPS模块/SATES-ST91Z8LR:电路搭建;直接用电脑的USB转串口进行通讯;模组上报定位数据转换地图识别的坐标手动查询地图位置

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

设计模式阅读笔记

参考&#xff1a;设计模式目录&#xff1a;22种设计模式 设计模式是什么&#xff1f; 设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图&#xff0c; 可用于解决代码中反复出现的设计问题。 设计模式与方法或库的使用方式不同&#xff0c…

详尽的oracle sql函数

1&#xff0c;CHR 输入整数&#xff0c;返回对应字符。 用法&#xff1a;select chr(65),chr(78) from dual; 2&#xff0c;ASCII 输入字符&#xff0c;返回对应ASCII码。 用法&#xff1a;select ascii(A),ascii(B) from dual; 3&#xff0c;CONCAT 输入两个字符串&#xff0c…

C++小碗菜之二:软件单元测试

“没有测试的代码重构不能称之为重构&#xff0c;它仅仅是垃圾代码的到处移动” ——Corey Haines 目录 前言 什么是单元测试&#xff1f; 单元测试的组成 单元测试的命名 单元测试的独立性 Google Test 单元测试的环境配置与使用 1. Ubuntu下安装 Google Test 2. 编写…