Java学习路线-65:整合 SSM-Spring+SpringMVC+MyBatis
发布日期:2021-07-01 06:11:42 浏览次数:2 分类:技术文章

本文共 15929 字,大约阅读时间需要 53 分钟。

整合 SSM

项目结构

.├── pom.xml└── src    └── main        ├── java        │   └── com        │       └── pengshiyu        │           ├── controller        │           │   └── UserController.java        │           ├── dao        │           │   ├── UserDao.java        │           │   └── impl        │           │       └── UserDaoImpl.java        │           ├── interceptor        │           │   └── MyInterceptor.java        │           ├── service        │           │   ├── UserService.java        │           │   └── impl        │           │       └── UserServiceImpl.java        │           └── vo        │               └── User.java        ├── resources        │   ├── applicationContext.xml        │   ├── db.properties        │   ├── mappers        │   │   └── user.mapper.xml        │   ├── mybatis-config.xml        │   └── spring-mvc.xml        └── webapp            ├── WEB-INF            │   └── web.xml            ├── detail.jsp            ├── edit.jsp            └── list.jsp

依赖

pom.xml

4.0.0
org.example
spring-mvc-demo
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8080
/
UTF-8
true
src/main/webapp/WEB-INF/web.xml
true
org.springframework
spring-core
5.2.6.RELEASE
org.springframework
spring-beans
5.2.6.RELEASE
org.springframework
spring-context
5.2.6.RELEASE
org.springframework
spring-context-support
5.2.6.RELEASE
org.springframework
spring-web
5.2.6.RELEASE
org.springframework
spring-webmvc
5.2.6.RELEASE
org.springframework
spring-aop
5.2.6.RELEASE
org.springframework
spring-expression
5.2.6.RELEASE
commons-logging
commons-logging
1.2
javax.servlet
javax.servlet-api
4.0.1
provided
taglibs
standard
1.1.2
jstl
jstl
1.2
commons-io
commons-io
2.7
commons-fileupload
commons-fileupload
1.4
com.fasterxml.jackson.core
jackson-annotations
2.11.0
com.fasterxml.jackson.core
jackson-databind
2.11.0
com.fasterxml.jackson.core
jackson-core
2.11.0
org.aspectj
aspectjweaver
1.9.5
org.mybatis
mybatis
3.5.4
org.mybatis
mybatis-spring
2.0.4
org.springframework
spring-jdbc
5.2.6.RELEASE
mysql
mysql-connector-java
8.0.18

配置

1、web.xml

contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
spring-mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
spring-mvc
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*

2、applicationContext.xml

3、db.properties

driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/datausername=rootpassword=123456

4、spring-mvc.xml

5、mybatis-config.xml

6、user.mapper.xml

insert into users(name, password) values(#{name}, #{password})
delete from users where id = #{id}
update users set name = #{name}, password = #{password} where id = #{id}

实体类

package com.pengshiyu.vo;public class User {
private int id; private String name; private String password; public User(int id, String name, String password) {
this.id = id; this.name = name; this.password = password; } public User() {
} public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getPassword() {
return password; } public void setPassword(String password) {
this.password = password; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } @Override public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}'; }}

Dao

package com.pengshiyu.dao;import com.pengshiyu.vo.User;import java.util.List;public interface UserDao {
public List
list(); public User detail(int id); public int delete(int id); public int update(User user); public int insert(User user);}

实现类

package com.pengshiyu.dao.impl;import com.pengshiyu.dao.UserDao;import com.pengshiyu.vo.User;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.support.SqlSessionDaoSupport;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import java.util.List;@Repository("userDao")public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
@Autowired @Override public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory); } public List
list() {
return getSqlSession().selectList("com.pengshiyu.vo.user.mapper.selectList"); } public User detail(int id) {
return getSqlSession().selectOne("com.pengshiyu.vo.user.mapper.selectOne", id); } public int delete(int id) {
return getSqlSession().delete("com.pengshiyu.vo.user.mapper.delete", id); } public int update(User user) {
return getSqlSession().update("com.pengshiyu.vo.user.mapper.update", user); } public int insert(User user) {
return getSqlSession().insert("com.pengshiyu.vo.user.mapper.insert", user); }}

Service

package com.pengshiyu.service;import com.pengshiyu.vo.User;import java.util.List;public interface UserService {
public List
list(); public User detail(int id); public int delete(int id); public int update(User user); public int insert(User user);}

实现类

package com.pengshiyu.service.impl;import com.pengshiyu.dao.UserDao;import com.pengshiyu.service.UserService;import com.pengshiyu.vo.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Service("userService")public class UserServiceImpl implements UserService {
@Autowired private UserDao userDao; public void setUserDao(UserDao userDao) {
this.userDao = userDao; } public List
list() {
return userDao.list(); } public User detail(int id) {
return userDao.detail(id); } public int delete(int id) {
return userDao.delete(id); } public int update(User user) {
return userDao.update(user); } public int insert(User user) {
return userDao.insert(user); }}

Controller

package com.pengshiyu.controller;import com.pengshiyu.service.UserService;import com.pengshiyu.vo.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import java.io.IOException;import java.util.List;@Controller@RequestMapping("/user")public class UserController {
@Autowired private UserService userService; public void setUserService(UserService userService) {
this.userService = userService; } @RequestMapping("/list") public String list(ModelMap modelMap) throws IOException {
List
list = userService.list(); System.out.println(list); modelMap.addAttribute("list", list); return "/list.jsp"; } @RequestMapping("/detail") public String detail(int id, ModelMap modelMap) throws IOException {
User user = userService.detail(id); modelMap.addAttribute("user", user); return "/detail.jsp"; } @RequestMapping("/update") public String update(int id, ModelMap modelMap) throws IOException {
User user = userService.detail(id); modelMap.addAttribute("title", "修改"); modelMap.addAttribute("user", user); return "/edit.jsp"; } @RequestMapping("/add") public String add(ModelMap modelMap) throws IOException {
User user = new User(); modelMap.addAttribute("title", "添加"); modelMap.addAttribute("user", user); return "/edit.jsp"; } @RequestMapping("/delete") public String delete(int id) throws IOException {
userService.delete(id); return "redirect:list"; } @RequestMapping(value = "/edit", method = RequestMethod.POST) public String edit(User user, ModelMap modelMap) throws IOException {
if (user.getId() != 0) {
userService.update(user); } else {
userService.insert(user); } return "redirect:detail?id=" + user.getId(); }}

拦截器

此项目中并没有配置生效

package com.pengshiyu.interceptor;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.List;public class MyInterceptor implements HandlerInterceptor {
private List
allowedUrls; // 在请求处理的方法执行之前执行, // 返回true执行下一个拦截器, // 返回false不执行下一个拦截器 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle"); // 解决中文打印乱码输出 response.setContentType("text/html;charset=utf-8"); // 判断session Object user = request.getSession().getAttribute("user"); if(user != null){
return true; } // 判断放行路径 String url = request.getRequestURL().toString(); System.out.println(url); for(String temp: allowedUrls){
if(url.endsWith(temp)){
return true; } } // 如果没有登录就重定向到登录页面 response.sendRedirect("/login.do"); return false; } // 在处理方法执行之后执行 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle"); } // 在DispatcherServlet 之后执行 清理工作 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion"); } public List
getAllowedUrls() {
return allowedUrls; } public void setAllowedUrls(List
allowedUrls) {
this.allowedUrls = allowedUrls; }}

页面

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

list

编号 姓名 密码 详细 删除
${item.id} ${item.name} ${item.password} 详细 修改 删除

detail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

detail

返回列表

id: ${user.id}

name: ${user.name}

password: ${user.password}

edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

${title}

返回列表

项目代码

https://gitee.com/mouday/spring-springmvc-mybatis-demo

转载地址:https://pengshiyu.blog.csdn.net/article/details/106909885 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java学习路线-66:Maven
下一篇:Java学习路线-64:SpringMVC

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月15日 11时05分17秒