一、搭配环境
- 底层配置文件:文章指路:SSM框架整合(配置文件)
- 文章目录结构
二、简单测试环境
- StudentController.java
注解:@ResponseBody不需要定义一个jsp页面,直接在页面上显示返回的字符串
@Controller
@RequestMapping("/student")
public class StudentController {
@RequestMapping("/test")
@ResponseBody
public String test(){
return "This is a test";
}
}
-
测试,开启tomcat,结果报错:
java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
-
解决方法:
- 打开Project Structure…
- 选择Artifacts,并在WEB-INF里面Create Directory,命名为lib
- 选中lib,加入Library Files
- 全选中后,OK,之后OK,再进行测试
- 再次测试:成功
二、增删改查测试
1. 数据库建表
CREATE TABLE `student` (
`id` varchar(15) NOT NULL ,
`name` varchar(20) NOT NULL ,
`java` int(10) NULL ,
`web` int(10) NULL ,
PRIMARY KEY (`id`)
)
;
2. pojo与数据库对应的实体类
Student.java
public class Student {
private String id;
private String name;
private int java;
private int web;
public Student() {
}
public Student(String id, String name, int java, int web) {
this.id = id;
this.name = name;
this.java = java;
this.web = web;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getWeb() {
return web;
}
public void setWeb(int web) {
this.web = web;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", java=" + java +
", web=" + web +
'}';
}
}
3.增删改查操作
- dao层:数据库实现增删改查
StudentMapper.java
public interface StudentMapper {
//查询所有学生
List<Student> selectAllStudent();
//增加一位学生
int addStudent(Student student);
//修改一位学生
int updateStudent(Student student);
//删除一位同学
int deleteStudent(int id);
//查询一位学生byid
Student selectStudentById(int id);
}
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gaolang.dao.StudentMapper">
<!--查询所有学生-->
<select id="selectAllStudent" resultType="Student">
select * from student
</select>
<!--增加一位学生-->
<insert id="addStudent" parameterType="Student">
insert into student values (#{id},#{name},#{java},#{web})
</insert>
<!--修改一位学生-->
<update id="updateStudent" parameterType="Student">
update student set name=#{name},java=#{java},web=#{web} where id=#{id}
</update>
<!--删除一位学生-->
<delete id="deleteStudent" parameterType="int">
delete from student where id=#{id}
</delete>
<!--查询一位同学-->
<select id="selectStudentById" parameterType="int" resultType="Student">
select * from student where id = #{id}
</select>
</mapper>
- service层:对dao层数据加工,这里暂时和dao层相同
StudentService.java
public interface StudentService {
//查询所有学生
List<Student> selectAllStudent();
//增加一位学生
int addStudent(Student student);
//修改一位学生
int updateStudent(Student student);
//删除一位同学
int deleteStudent(int id);
//查询一位学生byid
Student selectStudentById(int id);
}
StudentServiceImpl.java
public class StudentServiceImpl implements StudentService{
private StudentMapper studentMapper;
public void setStudentMapper(StudentMapper studentMapper) {
this.studentMapper = studentMapper;
}
@Override
public List<Student> selectAllStudent() {
return studentMapper.selectAllStudent();
}
@Override
public int addStudent(Student student) {
return studentMapper.addStudent(student);
}
@Override
public int updateStudent(Student student) {
return studentMapper.updateStudent(student);
}
@Override
public int deleteStudent(int id) {
return studentMapper.deleteStudent(id);
}
@Override
public Student selectStudentById(int id) {
return studentMapper.selectStudentById(id);
}
}
- controller层:调用service层进行数据处理和页面跳转
StudentController.java
@Controller
@RequestMapping("/student")
public class StudentController {
@Autowired
@Qualifier("StudentServiceImpl")
private StudentService studentService;
@RequestMapping("/test")
@ResponseBody
public String test(){
return "This is a test";
}
//所有学生
@RequestMapping("/allStudent")
public String allStudent(Model model){
List<Student> students = studentService.selectAllStudent();
model.addAttribute("list",students);
return "allStudent";
}
//跳转到addStudent界面
@RequestMapping("/toAddStudent")
public String toAddStudent(){
return "addStudent";
}
//对addStudent界面操作,并返回allStudent界面
@RequestMapping("/addStudent")
public String addStudent(Student student){
studentService.addStudent(student);
return "redirect:/student/allStudent";
}
//跳转到updateStudent界面
@RequestMapping("/toUpdateStudent")
public String toUpdateStudent(Model model,int id){
Student student = studentService.selectStudentById(id);
model.addAttribute("student",student);
return "updateStudent";
}
//对updateStudent界面操作,并返回allStudent界面
@RequestMapping("/updateStudent")
public String updateStudent(Student student){
studentService.updateStudent(student);
return "redirect:/student/allStudent";
}
@RequestMapping("/deleteStudent")
public String deleteStudent(int id){
studentService.deleteStudent(id);
return "redirect:/student/allStudent";
}
}
- 几个jsp页面
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/student/allStudent">点击</a>
</body>
</html>
allStudent.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta name="viewport" content="width= device-width,initial-scale=1.0">
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="page-header" style="text-align:center">
<h1>查询成绩</h1>
</div>
<table class="table table-bordered">
<thead>
<tr>
<td>学号</td>
<td>姓名</td>
<td>java</td>
<td>web</td>
<td></td>
</tr>
</thead>
<tbody>
<c:forEach var="student" items="${list}">
<tr>
<td>${student.id}</td>
<td>${student.name}</td>
<td>${student.java}</td>
<td>${student.web}</td>
<td>
<a href="${pageContext.request.contextPath}/student/toUpdateStudent?id=${student.id}">更改</a>|
<a href="${pageContext.request.contextPath}/student/deleteStudent?id=${student.id}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="row">
<div class="col-md-4 column">
<a class="btn btn-primary" href="${pageContext.request.contextPath}/student/toAddStudent">新增</a>
</div>
</div>
</body>
</html>
addStudent.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta name="viewport" content="width= device-width,initial-scale=1.0">
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="page-header" style="text-align:center">
<h1>学生添加</h1>
</div>
<form class="form-horizontal" action="${pageContext.request.contextPath}/student/addStudent" method="post">
ID:<input type="text" name="id"><br><br><br>
姓名:<input type="text" name="name"><br><br><br>
java:<input type="text" name="java"><br><br><br>
web:<input type="text" name="web"><br><br><br>
<input type="submit" value="添加">
</form>
</body>
</html>
updateStudent.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta name="viewport" content="width= device-width,initial-scale=1.0">
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="page-header" style="text-align:center">
<h1>学生修改</h1>
</div>
<form class="form-horizontal" action="${pageContext.request.contextPath}/student/updateStudent" method="post">
ID:<input type="text" name="id" value="${student.id}"><br><br><br>
姓名:<input type="text" name="name" value="${student.name}"><br><br><br>
java:<input type="text" name="java" value="${student.java}"><br><br><br>
web:<input type="text" name="web" value="${student.web}"><br><br><br>
<input type="submit" value="修改">
</form>
</body>
</html>