2401_89362627 2024-12-16 11:22 采纳率: 0%
浏览 23

javaweb新闻管理系统

系统必须要有注册登录功能,并且至少要实现基本的数据库操作(增删改查)。系统的实现需要使用我们这门课程学习的技术,包括JSP、Servlet、JDBC、EL、JSTL和过滤器。

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2024-12-16 11:24
    关注
    让【道友老李】来帮你解答,本回答参考通义千问qwen-plus编写,并整理提供,如果还有疑问可以点击头像关注,评论或留言
    ### 系统需求分析

    为了满足系统的需求,我们需要实现一个具备注册登录功能,并能够进行基本数据库操作(增删改查)的Web应用。我们将使用以下技术:

    • JSP:用于生成动态网页。
    • Servlet:用于处理用户请求和响应。
    • JDBC:用于与数据库进行交互。
    • EL:用于在JSP页面中访问数据。
    • JSTL:用于在JSP页面中进行逻辑控制。
    • 过滤器:用于处理请求和响应的预处理和后处理。

    系统设计

    1. 数据库设计

    假设我们有一个用户表 users,其结构如下:

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL UNIQUE,
        password VARCHAR(255) NOT NULL,
        email VARCHAR(100)
    );
    

    2. 项目结构

    WebContent/
    ├── META-INF/
    │   └── MANIFEST.MF
    ├── WEB-INF/
    │   ├── lib/
    │   ├── web.xml
    │   └── classes/
    │       └── com/
    │           └── example/
    │               ├── controller/
    │               │   ├── LoginServlet.java
    │               │   ├── RegisterServlet.java
    │               │   └── UserServlet.java
    │               ├── dao/
    │               │   └── UserDao.java
    │               ├── model/
    │               │   └── User.java
    │               └── filter/
    │                   └── AuthFilter.java
    ├── index.jsp
    ├── login.jsp
    ├── register.jsp
    └── user.jsp
    

    3. 主要类和接口

    3.1 User.java
    package com.example.model;
    
    public class User {
        private int id;
        private String username;
        private String password;
        private String email;
    
        // Getters and Setters
    }
    
    3.2 UserDao.java
    package com.example.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.example.model.User;
    import com.example.util.DBUtil;
    
    public class UserDao {
        public void addUser(User user) throws SQLException {
            String sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement ps = conn.prepareStatement(sql)) {
                ps.setString(1, user.getUsername());
                ps.setString(2, user.getPassword());
                ps.setString(3, user.getEmail());
                ps.executeUpdate();
            }
        }
    
        public User getUserByUsername(String username) throws SQLException {
            String sql = "SELECT * FROM users WHERE username = ?";
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement ps = conn.prepareStatement(sql)) {
                ps.setString(1, username);
                try (ResultSet rs = ps.executeQuery()) {
                    if (rs.next()) {
                        User user = new User();
                        user.setId(rs.getInt("id"));
                        user.setUsername(rs.getString("username"));
                        user.setPassword(rs.getString("password"));
                        user.setEmail(rs.getString("email"));
                        return user;
                    }
                }
            }
            return null;
        }
    
        public List<User> getAllUsers() throws SQLException {
            String sql = "SELECT * FROM users";
            List<User> users = new ArrayList<>();
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement ps = conn.prepareStatement(sql);
                 ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    User user = new User();
                    user.setId(rs.getInt("id"));
                    user.setUsername(rs.getString("username"));
                    user.setPassword(rs.getString("password"));
                    user.setEmail(rs.getString("email"));
                    users.add(user);
                }
            }
            return users;
        }
    
        public void updateUser(User user) throws SQLException {
            String sql = "UPDATE users SET username = ?, password = ?, email = ? WHERE id = ?";
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement ps = conn.prepareStatement(sql)) {
                ps.setString(1, user.getUsername());
                ps.setString(2, user.getPassword());
                ps.setString(3, user.getEmail());
                ps.setInt(4, user.getId());
                ps.executeUpdate();
            }
        }
    
        public void deleteUser(int id) throws SQLException {
            String sql = "DELETE FROM users WHERE id = ?";
            try (Connection conn = DBUtil.getConnection();
                 PreparedStatement ps = conn.prepareStatement(sql)) {
                ps.setInt(1, id);
                ps.executeUpdate();
            }
        }
    }
    
    3.3 DBUtil.java
    package com.example.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class DBUtil {
        private static final String URL = "jdbc:mysql://localhost:3306/yourdb";
        private static final String USER = "youruser";
        private static final String PASSWORD = "yourpassword";
    
        static {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(URL, USER, PASSWORD);
        }
    }
    
    3.4 LoginServlet.java
    package com.example.controller;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import com.example.dao.UserDao;
    import com.example.model.User;
    
    @WebServlet("/login")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String username = request.getParameter("username");
            String password = request.getParameter("password");
    
            UserDao userDao = new UserDao();
            User user = null;
            try {
                user = userDao.getUserByUsername(username);
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            if (user != null && user.getPassword().equals(password)) {
                HttpSession session = request.getSession();
                session.setAttribute("user", user);
                response.sendRedirect("user.jsp");
            } else {
                request.setAttribute("error", "Invalid username or password");
                request.getRequestDispatcher("login.jsp").forward(request, response);
            }
        }
    }
    
    3.5 RegisterServlet.java
    package com.example.controller;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.example.dao.UserDao;
    import com.example.model.User;
    
    @WebServlet("/register")
    public class RegisterServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
    
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
    
            UserDao userDao = new UserDao();
            try {
                userDao.addUser(user);
                request.setAttribute("success", "Registration successful");
                request.getRequestDispatcher("login.jsp").forward(request, response);
            } catch (SQLException e) {
                e.printStackTrace();
                request.setAttribute("error", "Registration failed");
                request.getRequestDispatcher("register.jsp").forward(request, response);
            }
        }
    }
    
    3.6 UserServlet.java
    package com.example.controller;
    
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.example.dao.UserDao;
    import com.example.model.User;
    
    @WebServlet("/users")
    public class UserServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            UserDao userDao = new UserDao();
            List<User> users = null;
            try {
                users = userDao.getAllUsers();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            request.setAttribute("users", users);
            request.getRequestDispatcher("user.jsp").forward(request, response);
        }
    }
    
    3.7 AuthFilter.java
    package com.example.filter;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class AuthFilter implements Filter {
        public void init(FilterConfig fConfig) throws ServletException {
        }
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            HttpSession session = httpRequest.getSession(false);
    
            if (session == null || session.getAttribute("user") == null) {
                httpResponse.sendRedirect("login.jsp");
            } else {
                chain.doFilter(request, response);
            }
        }
    
        public void destroy() {
        }
    }
    

    JSP 页面

    4.1 index.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Home</title>
    </head>
    <body>
        <h1>Welcome to the User Management System</h1>
        <a href="login.jsp">Login</a> | <a href="register.jsp">Register</a>
    </body>
    </html>
    
    4.2 login.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <h1>Login</h1>
        <form action="login" method="post">
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required><br>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required><br>
            <input type="submit" value="Login">
        </form>
        <p style="color: red;">${error}</p>
        <p style="color: green;">${success}</p>
    </body>
    </html>
    
    4.3 register.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Register</title>
    </head>
    <body>
        <h1>Register</h1>
        <form action="register" method="post">
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required><br>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required><br>
            <label for="email">Email:</label>
            <input type="email" id="email" name="email" required><br>
            <input type="submit" value="Register">
        </form>
        <p style="color: red;">${error}</p>
        <p style="color: green;">${success}</p>
    </body>
    </html>
    
    4.4 user.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
        <title>User Management</title>
    </head>
    <body>
        <h1>User Management</h1>
        <table border="1">
            <tr>
                <th>ID</th>
                <th>Username</th>
                <th>Email</th>
                <th>Action</th>
            </tr>
            <c:forEach var="user" items="${users}">
                <tr>
                    <td>${user.id}</td>
                    <td>${user.username}</td>
                    <td>${user.email}</td>
                    <td>
                        <a href="edit?userId=${user.id}">Edit</a> |
                        <a href="delete?userId=${user.id}">Delete</a>
                    </td>
                </tr>
            </c:forEach>
        </table>
        <a href="logout">Logout</a>
    </body>
    </html>
    

    配置文件

    5.1 web.xml

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <servlet>
            <servlet-name>LoginServlet</servlet-name>
            <servlet-class>com.example.controller.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LoginServlet</servlet-name>
            <url-pattern>/login</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>RegisterServlet</servlet-name>
            <servlet-class>com.example.controller.RegisterServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>RegisterServlet</servlet-name>
            <url-pattern>/register</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>UserServlet</servlet-name>
            <servlet-class>com.example.controller.UserServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>UserServlet</servlet-name>
            <url-pattern>/users</url-pattern>
        </servlet-mapping>
    
        <filter>
            <filter-name>AuthFilter</filter-name>
            <filter-class>com.example.filter.AuthFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>AuthFilter</filter-name>
            <url-pattern>/user.jsp</url-pattern>
            <url-pattern>/users</url-pattern>
        </filter-mapping>
    
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    

    总结

    以上是一个完整的基于JSP、Servlet、JDBC、EL、JSTL和过滤器的用户管理系统。该系统实现了注册、登录功能,并提供了基本的数据库操作(增删改查)。通过上述代码和配置,你可以快速搭建并运行这个系统。希望这些内容对你有所帮助!

    评论

报告相同问题?

问题事件

  • 创建了问题 12月16日