2024-05-26
大学课程
00

目录

1 JSP 基础语法练习
2 EL 表达式应用
3 结合 JavaBean 构建动态页面
4 实验要求4~8
4.1 Model
4.2 Controller
4.3 View
4.4 整体效果

记录实验5过程及代码。

碎碎念:哥们是真的不会前端和c++,怎么最近就总能碰见这俩东西,而且JSP是真的不会,调试我都懵圈不知道怎么调,直接问AI让它帮我写了。

提示

这次实验需要引入JSTL库,我的Tomcat 10对应的JSTL的maven依赖:

xml
<dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-spec</artifactId> <version>1.2.5</version> </dependency>

Tomcat 9及以下用的JSTL库就不一样了,建议根据自己的项目的管理方式和Tomcat版本进行查询。

1 JSP 基础语法练习

html
<%-- experiment5_1.jsp --%> <%-- Created by IntelliJ IDEA. User: Misaka19327 Date: 2024/5/25 Time: 20:44 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% String test1 = "Test Out Info"; System.out.println(test1); %> <jsp:useBean id="person" class="org.example.webstructure.experiment5.Person" scope="session"/> <jsp:setProperty name="person" property="name" value="John"/> <jsp:setProperty name="person" property="age" value="30"/> <p> 姓名: <jsp:getProperty name="person" property="name"/> <br/> 年龄: <jsp:getProperty name="person" property="age"/> </p> </body> </html>

image.png

2 EL 表达式应用

html
<%-- experiment5_2.jsp --%> <%-- Created by IntelliJ IDEA. User: Misaka19327 Date: 2024/5/25 Time: 20:53 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> <h1>EL表达式示例</h1> <%-- 获取请求参数 --%> <c:set var="paramValue" value="${param.paramName}"/> <%-- 获取Session属性 --%> <c:set var="attributeValue" value="${sessionScope.attributeName}"/> <%-- 获取Application范围内的共享数据 --%> <c:set var="attributeValue" value="${applicationScope.attributeName}"/> <%-- 条件显示 --%> <c:if test="${not empty param.paramName}"> <p>请求参数存在</p> </c:if> <%-- 列表遍历 --%> <%-- 假设名为 "list" 的列表已在后台设置 --%> <jsp:useBean id="list" scope="request" type="java.util.List"/> <c:forEach var="item" items="${list}"> <p>${item}</p> </c:forEach> </body> </html>
java
// Experiment5_2.java package org.example.webstructure.experiment5; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; @WebServlet(value = "/ELExample") public class Experiment5_2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置请求参数 request.setAttribute("paramName", "paramValue"); // 设置Session属性 request.getSession().setAttribute("attributeName", "attributeValue"); // 设置Application范围内的共享数据 getServletContext().setAttribute("attributeName", "attributeValue"); // 设置列表数据 List<String> list = new ArrayList<>(); list.add("Item 1"); list.add("Item 2"); list.add("Item 3"); request.setAttribute("list", list); // 转发到JSP页面 request.getRequestDispatcher("Experiment5/experiment5_2.jsp").forward(request, response); } }

image.png

3 结合 JavaBean 构建动态页面

html
<%-- experiment5_3.jsp --%> <%-- Created by IntelliJ IDEA. User: Misaka19327 Date: 2024/5/25 Time: 21:35 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>JavaBean示例</h1> <h2>从请求作用域获取JavaBean数据:</h2> <p>Name: ${person.name}</p> <p>Age: ${person.age}</p> <h2>从会话作用域获取JavaBean数据:</h2> <p>Name: ${sessionScope.person.name}</p> <p>Age: ${sessionScope.person.age}</p> </body> </html>
java
// Person.java package org.example.webstructure.experiment5; import java.beans.JavaBean; @JavaBean public class Person { private String name; private int age; public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
java
// Experiment5_3.java package org.example.webstructure.experiment5; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(value = "/Experiment5_3") public class Experiment5_3 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 创建JavaBean对象 Person person = new Person(); // 设置JavaBean的属性 person.setName("TestName"); person.setAge(24); // 将JavaBean放入请求作用域 request.setAttribute("person", person); // 将JavaBean放入会话作用域 request.getSession().setAttribute("person", person); // 转发到JSP页面 request.getRequestDispatcher("Experiment5/experiment5_3.jsp").forward(request, response); } }

image.png

4 实验要求4~8

4.1 Model

java
// UserEntity.java package org.example.webstructure.experiment5; import java.beans.JavaBean; @JavaBean public class UserEntity { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
java
// UserDAO.java package org.example.webstructure.experiment5; import java.sql.*; public class UserDAO { Connection connection; public UserDAO() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:19327/test", "root", "123456"); } public boolean checkPassword (UserEntity user) throws SQLException { PreparedStatement preparedStatement = connection.prepareStatement("select userPassword from userinfo where userName = ?"); preparedStatement.setString(1, user.getUserName()); ResultSet result = preparedStatement.executeQuery(); result.next(); return result.getString(1).equals(user.getPassword()); } public boolean addUser (UserEntity user) throws SQLException { PreparedStatement preparedStatement = connection.prepareStatement("insert into userinfo (userName, userPassword) value (?, ?)"); preparedStatement.setString(1, user.getUserName()); preparedStatement.setString(2, user.getPassword()); int result = preparedStatement.executeUpdate(); return result == 1; } }
sql
CREATE TABLE `userinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `userPassword` varchar(50) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; insert into userinfo (userName, userPassword) value (这里想填啥用户名和密码就填啥);

4.2 Controller

java
// EnrollController.java package org.example.webstructure.experiment5; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part; import java.io.IOException; import java.io.Writer; import java.sql.SQLException; @WebServlet(value = "/experiment5_enroll") @MultipartConfig public class EnrollController extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); RequestDispatcher dispatcher = req.getRequestDispatcher("Experiment5/enroll.jsp"); dispatcher.forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userName, userPassword; userName = req.getParameter("userName"); userPassword = req.getParameter("userPassword"); UserEntity user = new UserEntity(); user.setUserName(userName); user.setPassword(userPassword); Writer writer = resp.getWriter(); try { UserDAO dao = new UserDAO(); if (dao.addUser(user)) { writer.write("Enroll Successful"); } else { writer.write("Enroll Failed"); } } catch (SQLException | ClassNotFoundException e) { writer.write(e.getMessage()); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } }
java
// LoginController.java package org.example.webstructure.experiment5; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part; import java.io.IOException; import java.io.Writer; import java.sql.SQLException; @WebServlet(value = "/experiment5_login") @MultipartConfig public class LoginController extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); RequestDispatcher dispatcher = req.getRequestDispatcher("Experiment5/login.jsp"); dispatcher.forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userName, userPassword; userName = req.getParameter("userName"); userPassword = req.getParameter("userPassword"); UserEntity user = new UserEntity(); user.setUserName(userName); user.setPassword(userPassword); Writer writer = resp.getWriter(); try { log(user.getPassword()); UserDAO dao = new UserDAO(); if (dao.checkPassword(user)) { writer.write("Login Successful"); } else { writer.write("Login Failed"); } } catch (SQLException | ClassNotFoundException e) { writer.write(e.getMessage()); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } }

4.3 View

html
<%-- enroll.jsp --%> <%-- Created by IntelliJ IDEA. User: Misaka19327 Date: 2024/5/26 Time: 9:40 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Enroll</title> </head> <body> <h1>Enroll</h1> <form action="${pageContext.request.contextPath}//experiment5_enroll" method="post"> <label for="userName">Username:</label> <input type="text" name="userName" id="userName" required><br> <label for="userPassword">Password:</label> <input type="password" name="userPassword" id="userPassword" required><br> <input type="submit" value="Enroll"> </form> </body> </html>
html
<%-- login.jsp --%> <%-- Created by IntelliJ IDEA. User: Misaka19327 Date: 2024/5/26 Time: 9:41 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>Login</title> </head> <body> <h1>Login</h1> <h1></h1> <form action="${pageContext.request.contextPath}//experiment5_login" method="post"> <label for="userName">Username:</label> <input type="text" name="userName" id="userName" required><br> <label for="userPassword">Password:</label> <input type="password" name="userPassword" id="userPassword" required><br> <input type="submit" value="Login"> </form> </body> </html>

4.4 整体效果

image.png

image.png

image.png

image.png

image.png

本文作者:御坂19327号

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!