诡异的404 /WEB-INF/jsp/ticket/list.jsp

本文探讨了一个使用Spring 3 Web MVC和Tomcat 7开发的小型Web应用程序中遇到的问题。当请求特定控制器路径时,部分页面返回404错误。作者尝试了多种配置调整来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做个小Web Application。
用的spring3 webmvc, tomcat7。

其中有一个controller的requestmapping是
/ticket,下面有list方法,对应的页面用InternalResourceResolver
prefix=/WEB-INF/jsp/
surfix=.jsp
结果只要是 /ticket/下的页面都返回404。
加一个字母变tickets也行
把prefix改成 /WEB-INF/page/ (相应路径也改)也行。
就是/WEB-INF/jsp/ticket/下出不来,显示404.
好的,以下是一个简易版的JavaWeb电影院售票系统的课程设计代码示例。这个示例包括基本的用户界面、数据库连接和简单的功能实现。 ### 1. 数据库设计 首先,我们需要设计一个简单的数据库来存储电影信息、用户信息和订单信息。假设我们使用MySQL数据库。 ```sql CREATE DATABASE cinema; USE cinema; CREATE TABLE movies ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, duration INT, price DECIMAL(5, 2) ); CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL ); CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, movie_id INT, quantity INT, total_price DECIMAL(5, 2), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (movie_id) REFERENCES movies(id) ); ``` ### 2. Java Web 应用程序 接下来,我们创建一个简单的Java Web应用程序,使用JSP和Servlet来实现基本的功能。 #### 2.1. 项目结构 ``` src/ |- controller/ |- MovieController.java |- UserController.java |- OrderController.java |- model/ |- Movie.java |- User.java |- Order.java |- dao/ |- MovieDAO.java |- UserDAO.java |- OrderDAO.java WebContent/ |- WEB-INF/ |- web.xml |- index.jsp |- login.jsp |- movies.jsp |- order.jsp ``` #### 2.2. 模型类 ```java // src/model/Movie.java public class Movie { private int id; private String title; private String description; private int duration; private double price; // Getters and Setters } // src/model/User.java public class User { private int id; private String username; private String password; // Getters and Setters } // src/model/Order.java public class Order { private int id; private int userId; private int movieId; private int quantity; private double totalPrice; // Getters and Setters } ``` #### 2.3. DAO 类 ```java // src/dao/MovieDAO.java import java.sql.*; import java.util.ArrayList; import java.util.List; public class MovieDAO { public List<Movie> getAllMovies() { List<Movie> movies = new ArrayList<>(); try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema", "root", "password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM movies")) { while (rs.next()) { Movie movie = new Movie(); movie.setId(rs.getInt("id")); movie.setTitle(rs.getString("title")); movie.setDescription(rs.getString("description")); movie.setDuration(rs.getInt("duration")); movie.setPrice(rs.getDouble("price")); movies.add(movie); } } catch (SQLException e) { e.printStackTrace(); } return movies; } // Other CRUD operations } // src/dao/UserDAO.java public class UserDAO { public User getUser(String username, String password) { User user = null; try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema", "root", "password"); PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?")) { pstmt.setString(1, username); pstmt.setString(2, password); try (ResultSet rs = pstmt.executeQuery()) { if (rs.next()) { user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); } } } catch (SQLException e) { e.printStackTrace(); } return user; } // Other CRUD operations } // src/dao/OrderDAO.java public class OrderDAO { public void createOrder(Order order) { try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cinema", "root", "password"); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO orders (user_id, movie_id, quantity, total_price) VALUES (?, ?, ?, ?)")) { pstmt.setInt(1, order.getUserId()); pstmt.setInt(2, order.getMovieId()); pstmt.setInt(3, order.getQuantity()); pstmt.setDouble(4, order.getTotalPrice()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } // Other CRUD operations } ``` #### 2.4. 控制器类 ```java // src/controller/MovieController.java 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 src.dao.MovieDAO; import src.model.Movie; @WebServlet("/movies") public class MovieController extends HttpServlet { private MovieDAO movieDAO; @Override public void init() { movieDAO = new MovieDAO(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Movie> movies = movieDAO.getAllMovies(); request.setAttribute("movies", movies); request.getRequestDispatcher("movies.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } // src/controller/UserController.java // src/controller/OrderController.java // Similar to MovieController ``` #### 2.5. JSP 页面 ```jsp <!-- WebContent/index.jsp --> <!DOCTYPE html> <html> <head> <title>Cinema Ticket Booking</title> </head> <body> <h1>Welcome to Cinema Ticket Booking</h1> <a href="login.jsp">Login</a> <a href="movies.jsp">View Movies</a> </body> </html> <!-- WebContent/login.jsp --> <!-- Similar to index.jsp --> <!-- WebContent/movies.jsp --> <!DOCTYPE html> <html> <head> <title>Movies</title> </head> <body> <h1>Movies</h1> <table> <tr> <th>Title</th> <th>Description</th> <th>Duration</th> <th>Price</th> <th>Action</th> </tr> <c:forEach var="movie" items="${movies}"> <tr> <td>${movie.title}</td> <td>${movie.description}</td> <td>${movie.duration}</td> <td>${movie.price}</td> <td><a href="order.jsp?id=${movie.id}">Order</a></td> </tr> </c:forEach> </table> </body> </html> <!-- WebContent/order.jsp --> <!-- Similar to movies.jsp --> ``` ### 3. 配置文件 ```xml <!-- WebContent/WEB-INF/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>MovieController</servlet-name> <servlet-class>src.controller.MovieController</servlet-class> </servlet> <servlet-mapping> <servlet-name>MovieController</servlet-name> <url-pattern>/movies</url-pattern> </servlet-mapping> <!-- Other servlet mappings --> </web-app> ``` ### 4. 依赖配置 在`pom.xml`中添加以下依赖: ```xml <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值