记录实验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版本进行查询。
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>
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);
}
}
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);
}
}
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;
}
}
sqlCREATE 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 (这里想填啥用户名和密码就填啥);
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);
}
}
}
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>
本文作者:御坂19327号
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!