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: AdministratorDate: 2024/12/5Time: 11:37To 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 {//重写方法:@Overrideprotected 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为请求路径。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子信息工程自动化 基于单片机的居室安全报警系统

摘要 本课题设计了基于STM32F103C6T6单片机为主控核心的居室安全报警系统。为了解决家庭居室的安全监控&#xff0c;通过温湿度芯片SHT30、烟雾传感器MQ-2、天然气传感器MQ-4来获取居室的温湿度、烟雾、天然气含量&#xff0c;使用了一个热释电传感器、菲涅耳透镜、红外传感信…

【vue3 for beginner】Pinia基本用法:存储user的信息

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 Pinia 简介 Pinia 是一个用于 Vue.js 应用的状态管理库&#xff0c;是 Vuex 的…

使用Goland对6.5840项目进行go build出现异常

使用Goland对6.5840项目进行go build出现异常 Lab地址: https://pdos.csail.mit.edu/6.824/labs/lab-mr.html项目地址: git://g.csail.mit.edu/6.5840-golabs-2024 6.5840运行环境: mac系统 goland git clone git://g.csail.mit.edu/6.5840-golabs-2024 6.5840 cd 6.5840/src…

C#设计模式--状态模式(State Pattern)

状态模式是一种行为设计模式&#xff0c;它允许对象在其内部状态发生变化时改变其行为。这种模式的核心思想是将状态封装在独立的对象中&#xff0c;而不是将状态逻辑散布在整个程序中。 用途 简化复杂的条件逻辑&#xff1a;通过将不同的状态封装在不同的类中&#xff0c;可…

nginx 自启动失败:Failed to parse PID from file: Invalid argument

记一次nginx自启动配置的问题 我的配置如下&#xff1a; [Unit] DescriptionA high performance web server and a reverse proxy server Afternetwork.target[Service] Typeforking PIDFile/home/u24/nginx/pid/nginx.pid ExecStartPre/home/u24/nginx/sbin/nginx -t -q -g d…

React基础知识四 Hooks

什么是hooks&#xff1f; (coderwhy) hooks是react 16.8&#xff08;2019年&#xff09;出的新特性。 react有两种形式来创建组件——类式和函数式。在hooks之前类式组件就是react最主流的编程方式。 这个时候&#xff0c;函数式组件是非常鸡肋的&#xff0c;几乎没什么用。因…

电子病历静态数据脱敏路径探索

一、引言 数据脱敏&#xff08;Data Masking&#xff09;&#xff0c;屏蔽敏感数据&#xff0c;对某些敏感信息&#xff08;比如patient_name、ip_no、ad、no、icd11、drug等等 &#xff09;通过脱敏规则进行数据的变形&#xff0c;实现隐私数据的可靠保护。电子病历作为医疗领…

迷宫路径搜索:广度优先搜索(BFS)

迷宫路径搜索&#xff1a;广度优先搜索&#xff08;BFS&#xff09;详解 1. 什么是广度优先搜索&#xff08;BFS&#xff09;&#xff1f; 广度优先搜索&#xff08;BFS&#xff09; 是一种在图或网格结构中逐层扩展节点的搜索算法&#xff0c;适合用于解决最短路径问题。 特点…

AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!

AIGC 012-Video LDM-Stable Video diffusion前身&#xff0c;将LDM扩展到视频生成任务&#xff01; 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者&#xff0c;作者在SD的架构上进行扩展&#xff0c;实现了视频的生成。后续在Vid…

openstack创建浮动IP全过程

1、创建外部网络&#xff0c;即是provider网络&#xff0c;有关provider网络的详细解释请参见我之前的文章openstack中的self-service和provider网络_openstack provider网络不能创建vlan吗-CSDN博客 network create --share --external --provider-physical-network physnet1…

ABAP DIALOG屏幕编程1

一、DIALOG屏幕编程 DIALOG屏幕编程是SAP ABAP中用于创建用户交互界面的一种技术&#xff0c;主要用于开发事务性应用程序。它允许用户通过屏幕输入或操作数据&#xff0c;程序根据用户的操作执行逻辑处理。 1、DIALOG编程的主要组件 a、屏幕 (Screen) DIALOG程序的核心部分…

Anaconda升级的解决方法

文章目录 关于conda升级问题1. 在原Anaconda版本上进行更新升级2. 就是重装Anaconda 镜像源配置的参数解释&#xff1a;1. conda-forge2. bioconda3. menpo 关于conda升级问题&#xff0c; Anaconda各种版本镜像下载地址&#xff1a; 关于conda升级问题 1. 在原Anaconda版本上…

服务路由和服务发现区别是什么?

要快速学习服务路由和服务发现的区别&#xff0c;以下是这个领域最重要的20%的知识&#xff1a; 服务路由&#xff08;Service Routing&#xff09; 定义&#xff1a;服务路由是微服务架构中的一个关键概念&#xff0c;涉及将客户端的请求路由到合适的服务实例上。在分布式系…

青训营-豆包MarsCode技术训练营试题解析二十七

介绍 ‌豆包青训营‌是由字节跳动和稀土掘金社区共同发起的技术培训和人才选拔项目。该项目的目标是培养具有职业竞争力的优秀开发工程师&#xff0c;并提供全程免费的课程&#xff0c;不收取任何费用‌。 课程内容和方向 豆包青训营的课程涵盖前端、后端和AI方向。在这个飞…

网络安全之信息收集

1、大纲 基本信息收集  网站后台查找 域名查找    整站分析 敏感目录    Googlehacker 端口扫描    URL采集 旁站C段    信息分析 CDN绕过方法 2、域名信息 对应IP收集 相关域名对应IP 站长之家-->站长工具 nslookup&#xff08;在cmd里面使用&…

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

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

乐橙云小程序插件接入HbuilderX

乐橙插件使用&#xff1a; 1.配置app.json文件&#xff0c;uniapp中在mainfest.json中配置 https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin ** 2、集成插件页面.json文件 ** uniapp在 pages.json 对应页面的 style -> usingComponents 引入组件&…

华为关键词覆盖应用市场ASO优化覆盖技巧

在我国的消费者群体当中&#xff0c;华为的品牌形象较高&#xff0c;且产品质量过硬&#xff0c;因此用户基数也大。与此同时&#xff0c;随着影响力的增大&#xff0c;华为不断向外扩张&#xff0c;也逐渐成为了海外市场的香饽饽。作为开发者和运营者&#xff0c;我们要认识到…

C#白盒测试(二)

在前两篇关于 C#白盒测试的学习博客中&#xff0c;我们已经对基础概念、常见结构测试以及一些工具的使用有了一定了解。今天&#xff0c;我们将聚焦于白盒测试中的数据驱动测试、测试替身以及如何优化测试套件&#xff0c;进一步提升我们的白盒测试能力。 一、数据驱动测试 在…

K8S疑难概念理解——容器运行时。CRI实现从Docker切为containerd历史

早期版本的k8s直接使用了docker部分功能&#xff0c;比如容器的创建、运行、监控、停止、销毁等&#xff0c;这一些与容器生命周期相关的逻辑实现就可称之为容器运行时。k8s意识到docker过于笨重&#xff0c;如docker-cli,docker swarm等组件k8s都用不上&#xff0c;那么能不能…