记录4

news/2025/2/21 10:02:16/文章来源:https://www.cnblogs.com/mlo9i/p/18724631

JavaWeb每日学习记录(第4天):JSP内置对象与标准动作标签的深入应用

2024年X月X日 星期X 晴

今天是JavaWeb学习的第四天,我主要深入学习了JSP的内置对象和标准动作标签。这些内容让我能够更高效地开发动态页面,并进一步优化了页面与Servlet之间的交互逻辑。


一、JSP内置对象的使用

JSP提供了多个内置对象,这些对象无需显式声明即可直接使用。它们为页面开发提供了极大的便利,尤其是requestresponsesessionapplication对象。我通过几个示例来巩固这些内置对象的使用。

示例1:使用requestsession对象实现用户登录状态管理

我编写了一个简单的登录功能,用户登录后,将用户名存储到session中,后续页面可以通过session获取用户信息以判断用户是否已登录。

登录页面(login.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>用户登录</title>
</head>
<body><h1>用户登录</h1><form action="login" method="post">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="登录"></form>
</body>
</html>

登录Servlet(LoginServlet.java)

@WebServlet("/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String username = request.getParameter("username");String password = request.getParameter("password");// 模拟用户登录逻辑if ("admin".equals(username) && "123".equals(password)) {HttpSession session = request.getSession();session.setAttribute("username", username); // 将用户名存入sessionresponse.sendRedirect("welcome.jsp");} else {response.sendRedirect("login.jsp?error=true");}}
}

欢迎页面(welcome.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>欢迎页面</title>
</head>
<body><%// 从session中获取用户名String username = (String) session.getAttribute("username");if (username == null) {response.sendRedirect("login.jsp");}%><h1>欢迎你,<%= username %>!</h1><a href="logout">退出登录</a>
</body>
</html>

退出登录Servlet(LogoutServlet.java)

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession(false);if (session != null) {session.invalidate(); // 销毁session}response.sendRedirect("login.jsp");}
}

通过这个示例,我掌握了session对象的使用,以及如何通过session实现用户登录状态的管理。


二、JSP标准动作标签的使用

JSP标准动作标签提供了更简洁的方式来实现一些常见的操作,如页面跳转、数据传递等。我重点学习了<jsp:forward><jsp:param><jsp:include>等标签。

示例2:使用<jsp:forward><jsp:param>实现页面跳转与参数传递

我编写了一个简单的表单提交示例,通过<jsp:forward>标签将请求转发到另一个JSP页面,并传递参数。

表单页面(form.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>表单提交</title>
</head>
<body><h1>表单提交</h1><form action="process.jsp" method="post">用户名:<input type="text" name="username"><br>年龄:<input type="number" name="age"><br><input type="submit" value="提交"></form>
</body>
</html>

处理页面(process.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>处理结果</title>
</head>
<body><%String username = request.getParameter("username");int age = Integer.parseInt(request.getParameter("age"));%><jsp:forward page="result.jsp"><jsp:param name="username" value="<%= username %>"/><jsp:param name="age" value="<%= age %>"/></jsp:forward>
</body>
</html>

结果页面(result.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>结果页面</title>
</head>
<body><h1>提交结果</h1><p>用户名:<%= request.getParameter("username") %></p><p>年龄:<%= request.getParameter("age") %></p>
</body>
</html>

通过这个示例,我学会了如何使用<jsp:forward>标签进行页面跳转,并通过<jsp:param>传递参数。这种方式比直接使用RequestDispatcher更加简洁。


三、使用<jsp:include>实现页面复用

<jsp:include>标签可以动态包含其他JSP页面的内容,非常适合实现页面的复用。例如,我编写了一个简单的页面,通过<jsp:include>动态包含头部和尾部内容。

主页面(index.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>主页</title>
</head>
<body><jsp:include page="header.jsp"/><h1>欢迎访问主页</h1><jsp:include page="footer.jsp"/>
</body>
</html>

头部页面(header.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<header><h1>网站标题</h1><nav><a href="index.jsp">主页</a><a href="about.jsp">关于我们</a></nav>
</header>

尾部页面(footer.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<footer><p>&copy; 2024 版权所有</p>
</footer>

通过<jsp:include>标签,我实现了页面的复用,减少了代码冗余。


四、总结

今天我深入学习了JSP的内置对象和标准动作标签,并通过多个示例巩固了这些知识点。通过sessionrequest对象,我实现了用户登录状态的管理;通过<jsp:forward><jsp:param><jsp:include>标签,我掌握了页面跳转、参数传递和页面复用的方法。

这些内容让我对JSP的开发模式有了更深刻的理解,也让我能够更高效地开发动态页面。明天,我计划学习JSP的EL表达式和JSTL标签库,进一步提升页面开发的效率和可读性。

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

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

相关文章

数据类型拓展

数据类型扩展 整数拓展 整数拓展:进制 二进制0b开头 十进制 八进制0开头 十六进制0x开头public class Demo03 {public static void main(String[] args) {//整数拓展: 进制 二进制0b开头 十进制 八进制0开头 十六进制0x开头int i =10;int i2 =010…

寒假打工记

通过联系老师和亲戚获得了家教途径 以下是于中介的沟通总结: 找工作的话尽量不要通过中介简绍,会潜在收取大量的费用,导致工作收益太低,带三个高一学生数学2小时100,不足以提供食宿费;此外还应事先谈好薪资结算时间,以免拖欠。 以下是与学生家长的沟通总结: 与家长沟通…

亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

之前介绍过在IDEA中使用DeepSeek的方案,但是很多人表示还是用的不够爽,比如用CodeChat的方案,只支持V3版本,不支持带推理的R1。想要配置R1的话有特别的麻烦。作者:程序员 Hollis之前介绍过在IDEA中使用DeepSeek的方案,但是很多人表示还是用的不够爽,比如用CodeChat的方案…

Vscode中Eigen库的导入问题

Vscode中Eigen库的导入问题.Vscode中Eigen库的导入问题 在Vscode中,C++外部库(这里为Eigen)的导入问题主要有库的zip文件下载、在c_cpp_properties.json和tasks.json文件中进行路径配置。另外,如果运行代码使用Code Runner插件,还需要在Code Runner中进行路径配置(即使在…

最新更新!扣子(Coze)接入地表最强DeepSeek-R1大模型,超全攻略,手把手教学,完全免费教程

‍ 最新消息,国产地表最强大模型可以接入Coze平台了,今天斜杠君为大家带来了最细接入攻略,大家快学起来吧~ 备注:需要登录专业版火上引擎接入,开通专业版的同学需要开通一下。 接下来,话不多说,斜杠君用最简单的方式教给大家。 大家可以关注收藏,以免之后找不到,而且也…

1.如何在python中安装playwright

1.如何在python中安装playwright 打开pycharm,进入终端,输入如下的2个命令行代码即可自动完成playwright的安装 pip install playwright ——》在python中安装playwright第三方模块 playwright install ——》安装playwright所需的工具插件和所支持的浏览器 看到这里,是否想…

最新扣子(Coze)案例教程:DeepSeek 图像生成,用扣子应用打造超萌表情包生成器,手把手教学,完全免费教程

上一篇文章和大家分享了如何把DeepSeek-R1接入到扣子智能体中进行使用,这篇教程让我们来应用一下DeepSeek,使用DeepSeek结合工作流中的图像生成节点,打造一个表情包生成器的应用。 应用作用:输入一个人物或动物主题,生成一组表情包。 首先我们来看一下生成后的效果: 图像…

我悟了!原来本地图片预览还能这样搞

在网页开发中,经常会遇到需要让用户上传图片并在上传前进行预览的需求。这样做的好处显而易见:用户可以立即看到自己选择的图片是否正确,避免了不必要的上传和服务器资源浪费,提升了用户体验。Hey, 我是 Immerse 本文首发于 【沉浸式趣谈】,我的个人博客 https://yaolifen…

octave画高通滤波、超前,滞后补偿器的幅频响应图

octave代码非常简单:pkg load control s=tf(s); k=0.5; sysG1=k*(0.005*s)/(0.005*s+1); sysG2=k*(0.8*s+1)/(0.1*s+1); sysG3=k*(s+1)/(5*s+1); figure bode(sysG1) figure bode(sysG2) figure bode(sysG3)也可以借助循环,看如下代码:1 pkg load control2 s=tf(s);3 k=0.5;…

frame切换/窗口切换

frame切换/窗口切换 切换到frame点击这里,边看视频讲解,边学习以下内容 请大家点击这里,打开这个链接 如果我们要 选择 下图方框中 所有的 蔬菜,使用css选择,怎么写表达式? 当然,要先查看到它们的html元素特征大家可能会照旧写出如下代码:from selenium import webdriv…

选择元素的基本方法

选择元素的基本方法点击这里,边看视频讲解,边学习以下内容对于百度搜索页面,如果我们想自动化输入 白月黑羽 ,怎么做呢? 这就是在网页中,操控界面元素。 web界面自动化,要操控元素,首先需要 选择 界面元素 ,或者说 定位 界面元素 就是 先告诉浏览器,你要操作 哪个 …

操控元素的基本方法

操控元素的基本方法 点击这里,边看视频讲解,边学习以下内容选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以 操控 元素了。 操控元素通常包括 点击元素在元素中输入字符串,通常是对输入框这样的元素获取元素包含的信息,比如文本内容…