以下是一个简单的JSP-Servlet+Mybatis技能测试题代码示例:\n\n1. 创建电影表和电影分类表的SQL语句:\n\nsql\nCREATE TABLE movie (\n id INT PRIMARY KEY AUTO_INCREMENT,\n name VARCHAR(100),\n category_id INT\n);\n\nCREATE TABLE category (\n id INT PRIMARY KEY AUTO_INCREMENT,\n name VARCHAR(100)\n);\n\n\n2. 在mysql中手工录入分类表中的数据。\n\nsql\nINSERT INTO category (name) VALUES ('Action');\nINSERT INTO category (name) VALUES ('Comedy');\nINSERT INTO category (name) VALUES ('Drama');\n\n\n3. 创建WEB项目,导入必要的jar包。\n\n在项目的WEB-INF/lib目录下导入以下jar包:\n\n- mybatis.jar\n- mysql-connector-java.jar\n- javax.servlet.jar\n\n4. 列表模块功能,按照名称模糊查询。\n\n首先在Movie类中定义电影的属性和对应的getter和setter方法:\n\njava\npublic class Movie {\n private int id;\n private String name;\n private int categoryId;\n\n // getter and setter methods\n}\n\n\n然后在MovieMapper接口中定义查询电影列表的方法:\n\njava\npublic interface MovieMapper {\n List<Movie> getMoviesByName(String keyword);\n}\n\n\n接下来在MovieMapper.xml中实现该方法:\n\nxml\n<select id='getMoviesByName' parameterType='String' resultType='Movie'>\n SELECT * FROM movie WHERE name LIKE CONCAT('%', #{keyword}, '%')\n</select>\n\n\n在MovieServlet中处理请求,并调用Mybatis查询电影列表:\n\njava\nprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n String keyword = request.getParameter('keyword');\n List<Movie> movies = movieMapper.getMoviesByName(keyword);\n request.setAttribute('movies', movies);\n request.getRequestDispatcher('movies.jsp').forward(request, response);\n}\n\n\n在movies.jsp页面中展示查询结果:\n\njsp\n<%-- movies.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Movies</title>\n</head>\n<body>\n <h1>Movies</h1>\n <form action='movies' method='GET'>\n <input type='text' name='keyword' placeholder='Search by name' />\n <input type='submit' value='Search' />\n </form>\n <table>\n <thead>\n <tr>\n <th>ID</th>\n <th>Name</th>\n <th>Category</th>\n </tr>\n </thead>\n <tbody>\n <% for (Movie movie : (List<Movie>)request.getAttribute('movies')) { %>\n <tr>\n <td><%= movie.getId() %></td>\n <td><%= movie.getName() %></td>\n <td><%= movie.getCategoryId() %></td>\n </tr>\n <% } %>\n </tbody>\n </table>\n</body>\n</html>\n\n\n5. 添加模块功能。\n\n在MovieMapper接口中定义添加电影的方法:\n\njava\npublic interface MovieMapper {\n void addMovie(Movie movie);\n}\n\n\n接下来在MovieMapper.xml中实现该方法:\n\nxml\n<insert id='addMovie' parameterType='Movie'>\n INSERT INTO movie (name, category_id) VALUES (#{name}, #{categoryId})\n</insert>\n\n\n在MovieServlet中处理请求,并调用Mybatis添加电影:\n\njava\nprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n String name = request.getParameter('name');\n int categoryId = Integer.parseInt(request.getParameter('categoryId'));\n Movie movie = new Movie();\n movie.setName(name);\n movie.setCategoryId(categoryId);\n movieMapper.addMovie(movie);\n response.sendRedirect('movies');\n}\n\n\n在add_movie.jsp页面中展示添加电影表单:\n\njsp\n<%-- add_movie.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Add Movie</title>\n</head>\n<body>\n <h1>Add Movie</h1>\n <form action='add_movie' method='POST'>\n <input type='text' name='name' placeholder='Movie name' />\n <select name='categoryId'>\n <% for (Category category : categories) { %>\n <option value='<%= category.getId() %>'><%= category.getName() %></option>\n <% } %>\n </select>\n <input type='submit' value='Add' />\n </form>\n</body>\n</html>\n\n\n6. 使用ajax验证电影名称的唯一性。\n\n在MovieMapper接口中定义查询电影名称是否存在的方法:\n\njava\npublic interface MovieMapper {\n int countMoviesByName(String name);\n}\n\n\n接下来在MovieMapper.xml中实现该方法:\n\nxml\n<select id='countMoviesByName' parameterType='String' resultType='int'>\n SELECT COUNT(*) FROM movie WHERE name = #{name}\n</select>\n\n\n在MovieServlet中处理ajax请求,并调用Mybatis查询电影名称是否存在:\n\njava\nprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n String name = request.getParameter('name');\n int count = movieMapper.countMoviesByName(name);\n response.getWriter().print(count);\n}\n\n\n在add_movie.jsp页面中使用ajax验证电影名称的唯一性:\n\njsp\n<%-- add_movie.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Add Movie</title>\n <script src='https://code.jquery.com/jquery-3.6.0.min.js'></script>\n <script>\n $(function() {\n $('input[name='name']').on('blur', function() {\n var name = $(this).val();\n $.get('check_movie_name', { name: name }, function(count) {\n if (count > 0) {\n alert('Movie name already exists!');\n }\n });\n });\n });\n </script>\n</head>\n<body>\n <h1>Add Movie</h1>\n <form action='add_movie' method='POST'>\n <input type='text' name='name' placeholder='Movie name' />\n <select name='categoryId'>\n <% for (Category category : categories) { %>\n <option value='<%= category.getId() %>'><%= category.getName() %></option>\n <% } %>\n </select>\n <input type='submit' value='Add' />\n </form>\n</body>\n</html>\n\n\n7. 修改模块功能。\n\n在MovieMapper接口中定义修改电影的方法:\n\njava\npublic interface MovieMapper {\n void updateMovie(Movie movie);\n}\n\n\n接下来在MovieMapper.xml中实现该方法:\n\nxml\n<update id='updateMovie' parameterType='Movie'>\n UPDATE movie SET name = #{name}, category_id = #{categoryId} WHERE id = #{id}\n</update>\n\n\n在MovieServlet中处理请求,并调用Mybatis修改电影:\n\njava\nprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n int id = Integer.parseInt(request.getParameter('id'));\n String name = request.getParameter('name');\n int categoryId = Integer.parseInt(request.getParameter('categoryId'));\n Movie movie = new Movie();\n movie.setId(id);\n movie.setName(name);\n movie.setCategoryId(categoryId);\n movieMapper.updateMovie(movie);\n response.sendRedirect('movies');\n}\n\n\n在edit_movie.jsp页面中展示修改电影表单:\n\njsp\n<%-- edit_movie.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Edit Movie</title>\n</head>\n<body>\n <h1>Edit Movie</h1>\n <form action='edit_movie' method='POST'>\n <input type='hidden' name='id' value='<%= movie.getId() %>' />\n <input type='text' name='name' value='<%= movie.getName() %>' />\n <select name='categoryId'>\n <% for (Category category : categories) { %>\n <option value='<%= category.getId() %>' <% if (category.getId() == movie.getCategoryId()) { %>selected<% } %>><%= category.getName() %></option>\n <% } %>\n </select>\n <input type='submit' value='Save' />\n </form>\n</body>\n</html>\n\n\n8. 删除模块功能。\n\n在MovieMapper接口中定义删除电影的方法:\n\njava\npublic interface MovieMapper {\n void deleteMovie(int id);\n}\n\n\n接下来在MovieMapper.xml中实现该方法:\n\nxml\n<delete id='deleteMovie' parameterType='int'>\n DELETE FROM movie WHERE id = #{id}\n</delete>\n\n\n在MovieServlet中处理请求,并调用Mybatis删除电影:\n\njava\nprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n int id = Integer.parseInt(request.getParameter('id'));\n movieMapper.deleteMovie(id);\n response.sendRedirect('movies');\n}\n\n\n在movies.jsp页面中添加删除电影的链接:\n\njsp\n<%-- movies.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Movies</title>\n</head>\n<body>\n <h1>Movies</h1>\n <form action='movies' method='GET'>\n <input type='text' name='keyword' placeholder='Search by name' />\n <input type='submit' value='Search' />\n </form>\n <table>\n <thead>\n <tr>\n <th>ID</th>\n <th>Name</th>\n <th>Category</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n <% for (Movie movie : (List<Movie>)request.getAttribute('movies')) { %>\n <tr>\n <td><%= movie.getId() %></td>\n <td><%= movie.getName() %></td>\n <td><%= movie.getCategoryId() %></td>\n <td>\n <a href='edit_movie?id=<%= movie.getId() %>'>Edit</a>\n <form action='delete_movie' method='POST' style='display: inline;'>\n <input type='hidden' name='id' value='<%= movie.getId() %>' />\n <input type='submit' value='Delete' onclick='return confirm('Are you sure?')' />\n </form>\n </td>\n </tr>\n <% } %>\n </tbody>\n </table>\n</body>\n</html>\n\n\n9. 在添加与修改页面中,下拉框显示所属分类,其中数据从分类表中获取。\n\n在MovieServlet中查询分类列表并传递给页面:\n\njava\nprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n List<Category> categories = categoryMapper.getCategories();\n request.setAttribute('categories', categories);\n request.getRequestDispatcher('add_movie.jsp').forward(request, response);\n}\n\n\n在add_movie.jsp页面中展示下拉框:\n\njsp\n<%-- add_movie.jsp --%>\n<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset='UTF-8'>\n <title>Add Movie</title>\n</head>\n<body>\n <h1>Add Movie</h1>\n <form action='add_movie' method='POST'>\n <input type='text' name='name' placeholder='Movie name' />\n <select name='categoryId'>\n <% for (Category category : (List<Category>)request.getAttribute('categories')) { %>\n <option value='<%= category.getId() %>'><%= category.getName() %></option>\n <% } %>\n </select>\n <input type='submit' value='Add' />\n </form>\n</body>\n</html>\n\n\n10. 代码规范及注释。\n\n在代码中添加适当的注释,遵循命名规范,保持代码的可读性和易于维护性。


原文地址: https://www.cveoy.top/t/topic/p5VJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录