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