spring+spring mvc+hibernate实现简单登录注册网站
spring的一些概念
响应流程
依赖注入
依赖注入(Dependency Injection, DI)也被称为控制反转(Inversion of Control, IoC)。
简单介绍
如果调用者采用new方法创建被调用者以实现两个或多个对象的组合,简单说就是一个类的一段方法代码里若需要new很多个对象,就会导致代码耦合度高难调试。为此,引入了依赖注入的概念(传统方法有使用工厂模式,还是麻烦),
即一个类不需要查找或实例化(new)它们所依赖的类,对象间的依赖关系是在对象创建时由负责协调项目中各个对象的外部容器(spring)来提供并管理。也就是强调了对象间的某种依赖关系是由容器在运行期间注入调用者的,控制程序间关系的实现交给外部的容器来完成。
就我的理解,说白了,就是把类对象转化成全局变量放在一个仓库中由spring进行统一的管理。
最直观的表现
定义处:
|
|
使用处:
|
|
通过annotation的方式,@Repository 把其下定义的接口丢入仓库,再由 @Autowired 自动装配到需要使用到的代码部分。
spring ApplicationContext容器
Spring ApplicationContext 容器(极客学院)
spring aop
AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。
简单的说,就是定义一些方法As并规定一些条件,另外的某些类某些方法Bs若满足这些条件,此前定义的那些方法As就会自动执行。
简单登录注册网站的实现
相关环境
- intellij idea 2016
- spring + spring mvc + hibernate
- JDK 1.8
- mysql
- maven
- tomcat
spring环境配置
通过maven导入依赖的包
创建maven web项目后,编辑pom.xml文件,导入spring项目所需依赖的包。
|
|
以上主要是通过解析
在web.xml中注册servlet
|
|
在WEB-INF文件夹下新建mvc-dispatcher-servlet.xml配置文件
|
|
我的文件结构
model
- 首先在mysql里创建所需的表,然后在项目中
Add Frameword Support–>J2EE Persistence - 项目左侧会出现Persistence,右键
Generate Persistence Mapping–>By Database Schema - 再进行相关设置,最后idea就会根据数据库中的表自动生成model中对应的entity类。
repository
在repository包中新建UserRepository接口,放进仓库。
|
|
JpaRepository本身就提供一些基本的数据库操作方法,例如
- findAll()
- saveAndFlush(entity)
- …
我们还可以在接口内自定义数据库操作方法,如上所示。
@Query(value = "select * from user u where u.username=?1",nativeQuery = true)
其中@Query支持原生的mysql语句操作。
controller
在controller包中新建LoginController
|
|
- 首先需要@Controller注明控制器
- 接着通过@Autowired从仓库中取到userRepository对象
- 然后通过@RequestMapping将http请求映射到对应函数方法
- 最后return到相应的.jsp网页
(note. 数据库相关操作由userRepository完成)
login.jsp
|
|
前端向后端传值的方法
@PathVariable
举个栗子
|
|
@RequestParam
对应括号中的属性名获取值
|
|
@ModelAttribute
直接通过form传递一个entity值
|
|
intellij idea版本控制
从github网站将项目导入idea
- 新建项目选择 Check out from version control–>github
idea新建的项目分享到github上
- VCS–>import into version control–>share on github
总结
界面简陋这里就不献丑了。整个spring框架只是学了点皮毛,参照别人的经验教训恰巧能实现最基本的用户登录注册功能而已。不够系统,spring的很多特性没有涉及,实现功能的很多方法也没掌握。若要进一步深入学习的话,还是要下一番苦功夫,踏踏实实地写一个项目来的实在。