记录3

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

今天是JavaWeb学习的第3天,我主要深入学习了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 {
    @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>&copy; 2024 版权所有</p>
</footer>

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


四、总结

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

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

posted @ 2025-02-19 17:10  马瑞鑫03  阅读(18)  评论(0)    收藏  举报