博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Spring的SSM框架详解理解入门(spring Springmvc mybatis)
阅读量:7025 次
发布时间:2019-06-28

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

转自:http://www.cnblogs.com/verlen11/p/5349747.html

ssm框架理解

SSM框架理解

最近两星期一直在学JavaEE的MVC框架,因为之前学校开的JavaEE课程就一直学的吊儿郎当的,所以现在真正需要掌握就非常手忙脚乱,在此记录下这段时间学习的感悟,如有错误,希望大牛毫不客气地指出。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

SSM框架整合

要让几个框架相互配合,配置文件怎么写,项目的目录结构怎么设计对我这样一个新手来说实在很头疼。
目前我也只刚刚写过一个用户登录的demo,在此记录一下。
项目目录结构
-LoginDemo
-src
-项目主包
-controller
-mapper
-entity
-service
-web
-WEB-INF
-log4j.properties
-spring-mybatis.xml
-springMVC-config.xml
-web.xml
-index.jsp
-pom.xml
需要引入的包
pom.xml

1 
3 4
4.0.0
5
LoginDemo
6
com.cyan
7
ssm
8
war
9
1.0-SNAPSHOT
10
http://maven.apache.org
11 12 13
14
ssm
15
16
17
18
org.mybatis.generator
19
mybatis-generator-maven-plugin
20
1.3.2
21
22
true
23
true
24
25
26
27
org.apache.maven.plugins
28
maven-compiler-plugin
29
30
1.6 31
1.6
32
33
34
35
36 37 38
39
4.1.1.RELEASE
40
41 42 43 44
45
46
47
org.springframework
48
spring-core
49
${spring.version}
50
51 52
53
org.springframework
54
spring-web
55
${spring.version}
56
57 58
59
org.springframework
60
spring-oxm
61
${spring.version}
62
63 64
65
org.springframework
66
spring-tx
67
${spring.version}
68
69 70
71
org.springframework
72
spring-jdbc
73
${spring.version}
74
75 76
77
org.springframework
78
spring-webmvc
79
${spring.version}
80
81 82
83
org.springframework
84
spring-aop
85
${spring.version}
86
87 88
89
org.springframework
90
spring-context-support
91
${spring.version}
92
93 94
95
org.springframework
96
spring-test
97
${spring.version}
98
99
100 101
102
103
org.aspectj
104
aspectjweaver
105
1.8.6
106
107 108
109
org.aspectj
110
aspectjrt
111
1.8.6
112
113
114 115
116
117
com.mchange
118
c3p0
119
0.9.5.1
120
121 122
123
124
javax.servlet
125
servlet-api
126
2.5
127
128 129
130
javax.servlet.jsp
131
jsp-api
132
2.1
133
provided
134
135
136 137
138
139
junit
140
junit
141
4.11
142
test
143
144 145
146
147
org.mybatis
148
mybatis
149
3.3.0
150
151
152
153
org.mybatis
154
mybatis-spring
155
1.2.3
156
157 158
159
160
mysql
161
mysql-connector-java
162
5.1.6
163
164 165
166
167
jstl
168
jstl
169
1.2
170
171 172
173
复制代码

配置文件
web.xml

1 
2
6 7
8
9
org.springframework.web.context.ContextLoaderListener
10
11 12
13
14
springMVC-config
15
org.springframework.web.servlet.DispatcherServlet
16
17
contextConfigLocation
18
classpath:/WEB-INF/springMVC-config.xml
19
20
21 22
23
24
springMVC-config
25
/
26
27 28
29
30
contextConfigLocation
31
classpath:WEB-INF/spring-mybatis.xml
32
33 34
复制代码

spring-mybatis.xml

1 
2
13 14
15
16
17 18
19
20
21
22
23
24 25
26
27
28
29
30
31 32
33
34
35
36 37 38
39
40
41
42 43
44
45
46
47
48
49
50
51 52
53
54
55
56 57 58
复制代码

springMVC-config.xml

1 
11 12
14
15
16
17
18 19
20
21 22
23
24
25
26
27 28
复制代码

数据库表结构

详细类设计
-mapper
UserMapper

1 package com.cyan.Mapper; 2  3 import com.cyan.Model.User; 4 import org.apache.ibatis.annotations.Param; 5 import org.apache.ibatis.annotations.Select; 6  7 import javax.annotation.Resource; 8 import java.util.List; 9 10 /**11  * Created by cyan on 16/3/29.12  */13 14 public interface UserMapper {15     @Select("select * from LoginDemo")16     public List
selectUser();17 @Select("select * from LoginDemo where username=#{username}")18 public List
selectUserByUsername(@Param("username")String username);19 20 }复制代码

-entity

User

1 package com.cyan.Entity; 2  3 /** 4  * Created by cyan on 16/3/29. 5  */ 6 public class User { 7     private int id; 8     private String username,password,slogan; 9 10     public int getId() {11         return id;12     }13 14     public void setId(int id) {15         this.id = id;16     }17 18     public String getUsername() {19         return username;20     }21 22     public void setUsername(String username) {23         this.username = username;24     }25 26     public String getPassword() {27         return password;28     }29 30     public void setPassword(String password) {31         this.password = password;32     }33 34     public String getSlogan() {35         return slogan;36     }37 38     public void setSlogan(String slogan) {39         this.slogan = slogan;40     }41 42 }复制代码

-service
IUserService

1 package com.cyan.Service; 2  3 import com.cyan.Entity.User; 4  5 /** 6  * Created by cyan on 16/3/31. 7  */ 8 public interface IUserService { 9     public User getUserByName(String name);10     public boolean verify(String username,String pwd);11 }复制代码

UserService
Spring中的几个标签@Component(声明一个类是Spring容器管理的类,可以细分为后面提到的三个标签)、@Controller(控制层)、@Service(服务层)、@Repository(持久层)。标签的作用是让Spring根据名字关联到这个类。
@Autowired标签默认以byType的形式注入,使用这个标签是不需要getter和setter方法的。(这次代码中因为用户名密码校验部分要用到get方法所以写上了)
可以配合@Qualifier标签根据bean的id来装配。

1 package com.cyan.Service; 2  3 import com.cyan.Mapper.UserMapper; 4 import com.cyan.Entity.User; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Service; 7  8 /** 9  * Created by cyan on 16/3/31.10  */11 12 @Service("userService")13 public class UserService implements IUserService{14 15     @Autowired16     private UserMapper userMapper;17 18     public void setUserMapper(UserMapper userMapper) {19         this.userMapper = userMapper;20     }21 22     @Override23     public User getUserByName(String name) {24         return userMapper.selectUserByUsername(name).get(0);25     }26 27     @Override28     public boolean verify(String username, String pwd) {29         if(userMapper.selectUserByUsername(username).get(0).getPassword().equals(pwd))30             return true;31         else return false;32     }33 34 }复制代码

-controller
Login

1 package com.cyan.Controller; 2  3 import com.cyan.Service.IUserService; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RequestMethod; 8  9 import javax.servlet.http.HttpServletRequest;10 import javax.servlet.http.HttpServletResponse;11 12 /**13  * Created by cyan on 16/3/29.14  */15 16 @Controller17 public class Login {18 19     @Autowired20     private IUserService userService;21 22     @RequestMapping("/index")23     public String index(){24         return "index";25     }26 27     @RequestMapping(value ="/login",method = RequestMethod.POST)28     public String login(HttpServletRequest req, HttpServletResponse resp){29         String username=req.getParameter("username");30         String pwd=req.getParameter("password");31         if(userService.verify(username,pwd)){32             req.getSession().setAttribute("user",userService.getUserByName(username));33             return "success";34         }35         else return "index";36 37     }38 }复制代码

jsp页面
index.jsp

1 <%-- 2   Created by IntelliJ IDEA. 3   User: cyan 4   Date: 16/3/29 5   Time: 15:55 6   To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 10   11     Login12   13   14     
15 用户名:
16
17 密码:
18
19
20
21 22 复制代码

success.jsp

1 <%@ page import="com.cyan.Entity.User" %><%-- 2   Created by IntelliJ IDEA. 3   User: cyan 4   Date: 16/3/31 5   Time: 23:45 6   To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 10 11     LoginSuccess12 13 14 登录成功!15 <%16     User user=(User)session.getAttribute("user");17 %>18 用户名:<%=user.getUsername()%>
19 个性签名:<%=user.getSlogan()%>
20 21 复制代码

运行结果

相关学习资料移步:

转载于:https://juejin.im/post/59fbdf0cf265da432d27726b

你可能感兴趣的文章
ubuntu声音系统
查看>>
来自一个程序员内心深处的心声
查看>>
python练习题集合-1
查看>>
Lucene.net 全文检索 盘古分词
查看>>
求渐近线
查看>>
Beautifulsoup模块
查看>>
调用有道词典查询单词
查看>>
Angular学习-构建/部署
查看>>
poj1379 run away
查看>>
二叉搜索树
查看>>
第4章学习小结
查看>>
[来源不详]删数方案数
查看>>
Unity Shader 之 基础光照
查看>>
你的宠物
查看>>
多线程篇一:传统线程实现方式
查看>>
(转)面向对象5大基本特征
查看>>
RabbitMQie消息列队整理
查看>>
45种Javascript技巧大全
查看>>
【Unity】7.3 键盘输入
查看>>
abap number range
查看>>