记录3
JavaWeb每日学习记录(第3天):JSP内置对象与标准动作标签的深入应用
今天是JavaWeb学习的第3天,我主要深入学习了JSP的内置对象和标准动作标签。这些内容让我能够更高效地开发动态页面,并进一步优化了页面与Servlet之间的交互逻辑。
一、JSP内置对象的使用
JSP提供了多个内置对象,这些对象无需显式声明即可直接使用。它们为页面开发提供了极大的便利,尤其是request、response、session和application对象。我通过几个示例来巩固这些内置对象的使用。
示例1:使用request和session对象实现用户登录状态管理
我编写了一个简单的登录功能,用户登录后,将用户名存储到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 {
@Override
protected 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); // 将用户名存入session
response.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 {
@Override
protected 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>© 2024 版权所有</p>
</footer>
通过<jsp:include>标签,我实现了页面的复用,减少了代码冗余。
四、总结
今天我深入学习了JSP的内置对象和标准动作标签,并通过多个示例巩固了这些知识点。通过session和request对象,我实现了用户登录状态的管理;通过<jsp:forward>、<jsp:param>和<jsp:include>标签,我掌握了页面跳转、参数传递和页面复用的方法。
这些内容让我对JSP的开发模式有了更深刻的理解,也让我能够更高效地开发动态页面。明天,我计划学习JSP的EL表达式和JSTL标签库,进一步提升页面开发的效率和可读性。

浙公网安备 33010602011771号