什么是 RESTREST (Representational State Transfer) 是一种软件架构风格。它将服务端的信息和功能等所有事物统称为资源,客户端的请求实际就是对资源进行操作,它的主要特点有: - 每一个资源都会对应一个独一无二的 url - 客户端通过 HTTP 的 GET、POST、PUT、DELETE 请求方法对资源进行查询、创建、修改、删除操作 - 客户端与服务端的交互必须是无状态的
使用 Token 进行身份鉴权网站应用一般使用 Session 进行登录用户信息的存储及验证,而在移动端使用 Token 则更加普遍。它们之间并没有太大区别,Token 比较像是一个更加精简的自定义的 Session。Session 的主要功能是保持会话信息,而 Token 则只用于登录用户的身份鉴权。所以在移动端使用 Token 会比使用 Session 更加简易并且有更高的安全性,同时也更加符合 RESTful 中无状态的定义。
交互流程
客户端通过登录请求提交用户名和密码,服务端验证通过后生成一个 Token 与该用户进行关联,并将 Token 返回给客户端。
客户端在接下 ...
作用: 两者都可以用来装配 bean,可以写在字段上或写在 setter 方法上。
默认注入方式:
@Autowired (Spring 注解): 默认按类型 (byType) 注入。
@Resource (J2EE 注解): 默认按名称 (byName) 注入。
required 属性:
@Autowired: 默认要求依赖对象必须存在,可以设置 required=false 允许 null 值。
@Resource: 默认情况下,找不到匹配的 bean 会抛出异常。
指定名称:
@Autowired: 可以结合 @Qualifier 注解指定 bean 的名称。
@Resource: 可以直接在注解中通过 name 属性指定 bean 的名称。
代码示例:
1234567// 使用 @Autowired@Autowired@Qualifier("baseDao")private BaseDao baseDao;// 使用 @Resource@Resource(name="baseDao")private BaseDa ...
使用 Intellij idea 整合 SpringMVC+Spring+Mybatis 框架,基于 Annotation.
intellij 配置1.新建一个 Spring 工程,勾选 SpringMVC 和 Web Application 支持,不选择下载 jar 包,而是自己导入 jar 包
2.新建好项目之后的包结构如下:
3.在 WEB-INF 目录下新建 classes 和 lib 这 2 个文件夹F4 进入项目设置页面.a. 设置编译后的 class 文件输出路径
b. 将 lib 添加到构建路径中
c. 添加 Tomcat jar 包
4.配置 Tomcat 服务器 因为以前设置过默认配置,这里就简单的设置一下就可以了
5.将需要的 jar 包复制到 lib 文件夹下
xml 配置1.在 src 目录下新建: spring-mvc.xml SpringMVC 使用 spring-config.xml Spring 容器使用 mybatis-config.xml Mybatis 配置文件
2.web.xml 的配置 a.配置 SpringMVC 的核心控制 ...
SpringMVCSimpleMappingExceptionResolver在 Spring 的配置文件 applicationContext.xml 中增加以下内容:
123456789101112131415<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --> <property name="defaultErrorView" value="error"></property> <!-- 定义异常处理页面用来获取异常信息的变量名,默认名为 exception --> <property name="exceptionAttribute" value="ex"></property> &l ...
框架模式和设计模式的区别有很多程序员往往把框架模式和设计模式混淆,认为 MVC 是一种设计模式。实际上它们完全是不同的概念。框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块; 代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示; 设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。框架模式有哪些?MVC、MTV、MVP、CBD、ORM 等等;框架有哪些?C++ 语言的 QT、MFC、 ...
SSH 整合时实现了简单的登录功能,这次实现简单的注册功能.需要改动的地方下面会提到,没有提到的地方就不改动
要求1.登录 register.jsp 页面,填入必要信息,点击注册;2.如果成功,跳转到 success.jsp,并显示出所有的用户信息;3.如果注册失败,则跳转到 error.jsp 页面4.实现分页功能,实现删除功能
实现1.新建 t_user 表
12345678910111213141516171819202122232425262728293031323334353637-- ------------------------------ Table structure for t_user-- ----------------------------DROP TABLE IF EXISTS `t_user`;CREATE TABLE `t_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `f_name` varchar(255) DEFAULT NULL, `f_password` varchar(255) ...
1.mapper.xml 配置
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191<?xml version=&q ...
新时代码农
未读正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持
一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空。
二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。
对于缓存数据更新机制,当某一个作用域 (一级缓存 Session/二级缓存 Namespaces) 的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。
一级缓存测试1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import me.gacl.domain.User;impo ...
一对一关联1.要求假设一间房子只有一把锁,要求通过锁找到房子2.创建表和数据
12345678910111213141516171819202122232425262728293031323334353637SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for t_lock-- ----------------------------DROP TABLE IF EXISTS `t_lock`;CREATE TABLE `t_lock` ( `lock_id` int(11) NOT NULL AUTO_INCREMENT, `f_type` varchar(255) DEFAULT NULL, `fk_home_id` int(11) DEFAULT NULL, PRIMARY KEY (`lock_id`), KEY `fk_home_id` (`fk_home_id`), CONSTRAINT `t_lock_ibfk_1` FOREIGN KEY (`fk_home ...
新时代码农
未读上一节中对 Mybatis 的基本操作有了初步的了解,这一节中将使用 Mybatis 对数据表进行简单的 CRUD 操作.使用的测试环境和上一篇博客一样.
使用 Mybatis 对表执行 CRUD 操作 – 基于 XML 实现1.定义 UserMapper.java
12345678910111213141516171819package com.code.mapper;import com.code.bean.UserBean;import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper { //根据ID查找用户 UserBean getUserById(@Param("userID")int userID); //添加用户 int addUser(@Param("userBean")UserBean userBean); //删除用户 int deleteUser(@Para ...
MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。
iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAO)
MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
Mybatis 快速入门准备开发环境
创建测试项目,普通的 Java 项目或者 JavaWeb 项目均可
添加相应的 jar 包
Mybatis 核心包 myba ...
Hibernate 框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作 hibernate 框架。 只要实体类写好配置文件配好,就能实现和数据库的映射,其中实体类对应表,类的属性对应数据库的表字段。 这样就不用管数据库的相关操作了。
什么是 Hibernate如今,大多数是关系型数据库,而 Java 是面向对象的编程语言,使用面向对象的语言结合关系型数据库相当麻烦,所以有了 HibernateHibernate 将对象模型和基于 sql 的关系模型映射起来,使得开发者可以采用面向对象的方式开发程序.Hibernate 是关系型数据库和面向对象的程序设计语言之间的桥梁,它允许开发者使用面向对象的语言操作关系型数据库以前是应用程序直接访问底层数据库,而采用 ORM 框架之后,应用程序以面向对象的方式操作持久化对象,而 ORM 框架则将这些面向对象的操作转换为底层的 SQL 操作.
Hibernate 和 JDBC
jdbc 的优点和缺点
缺点
查询代码特别繁琐
重复性代码特别多,频繁的 try,catch
数据的缓存
sql 的移植性不好
优点
速度比较快
把控性比较好
...
多个 Spring 配置文件处理
采用逗号将多个配置文件分开
使用通配符
开启注解:<mvc:annotation-driven>开启自动扫描<context:component-scan base-package="包"
使用 Annotation 不用使用继承父类或者实现接口
RequestMapping
value
params –>对请求参数进行过滤
method –>代表请求方式 通过提交方式进行过滤请求
请求处理方法可以接受参数HttpServletRequestHttpServletResponesHttpServletSession
@RequsetParam 注解
restfulrepresentational state transfer表现层状态转移
请求处理方法可以返回的值
数据绑定
基本数据类型,String String[]绑定
只需要让 jsp 中的 name 值和 controller 中的属性名相同即可
绑定到一个 Bean 当中去
只要保证 Bean 中属性的名字和表单数据的 name 一 ...
EJB 缺点EJB 糟糕的代码和代码框架分布式模型滥用单元测试难以实现不要的复杂度导致性能降低容器的可移植性
重量级容器缺点带有侵入性的 API(代码依赖于 EJB)对容器的依赖 (代码不能再 EJB 容器之外工作)提供固定的一组机能,不具备配置能力不同的产品,部署过程不同,不易通用启动时间长
轻量级容器:3. Spring 容器负责 POJO 的生成和绑定关系
IoC 和 AOP容器的功效由 IoC 完成根据 Web 应用,小应用,桌面程序的不同,对容器的依赖程度不同Spring 将管理的 Bean 作为 POJO 进行控制,通过 AOP Interceptor 能够增强其他功能
Spring 框架图
Spring AOP
Spring ORM
Spring DAO
Spring Web
Spring Context
Spring Web MVC
Spring Core
IoC<–>DI 控制反转<–>依赖注入整个应用程序的表现结果是由外部容器的 配置 来控制整个应用程序的运行效果在系统运行时,由容器 (操作系统) 将依赖关系 (USB 外部设备) ...