Spring MyBatis      2017-03-03

Spring+SpingMVC的搭建参考博文 —— 搭建SpringMVC

这里主要记录SpringMVC与MyBatis的整合。

准备工作

数据库使用MySql,创建一张测试表:

 CREATE TABLE `emp` (
  `ID` int(4) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `AGE` int(11) DEFAULT NULL,
  `BIRTHDAY` date DEFAULT NULL,
  PRIMARY KEY (`ID`)
)
Spring Hibernate      2017-03-03

Spring+SpingMVC的搭建参考博文 —— 搭建SpringMVC

这里主要记录SpringMVC与Hibernate的整合。

准备工作

数据库使用MySql,创建一张测试表:

CREATE TABLE `emp` (
    `ID` int(4) NOT NULL AUTO_INCREMENT,
    `NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    `AGE` int(11) DEFAULT NULL,
    `BIRTHDAY` date DEFAULT NULL,
    PRIMARY KEY (`ID`)
)
Spring Security      2017-02-13

Spring Security提供了三种不同的安全注解:

1. Spring Security自带的@Secured注解;

2. JSR-250的@RolesAllowed注解;

3. 表达式驱动的注解,包括@PreAuthorize、@PostAuthorize、@PreFilter和 @PostFilter

在Spring-Security.xml中启用@Secured注解:

<global-method-security secured-annotations="enabled"/>

例如只有拥有权限“ROLE_ADMIN”的用户才能访问下面这个方法:

@Secured("ROLE_ADMIN")
Spring Security      2017-02-13

Spring Security提供了一套JSP标签库用于保护JSP视图。该库比较小,只提供了三个标签。

要使用这个库,先在JSP页首加入:

<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>

该库包含的三个标签如下:

 <security:accesscontrollist>:如果用户通过访问控制列表授予了指定的权限,那么渲染该标签体中的内容。

 <security:authentication>:渲染当前用户认证对象的详细信息。

 <security:authorize>:如果用户被授予了特定的权限或者SpEL表达式的计算结果为true,那么渲染该标签体中的内容。

认证用户信息

使用<security:authentication> JSP标签可以访问用户的认证详情:

1. principal:用户的基本信息对象。

使用admin登陆,查看其用户认证详情:

<sec:authentication property="principal"/>

页面显示内容如下:

org.springframework.security.core.userdetails.User@586034f: 
Username: admin; 
Password: [PROTECTED]; 
Enabled: true; 
AccountNonExpired: true; 
credentialsNonExpired: true; 
AccountNonLocked: true; 
Granted Authorities: ROLE_ADMIN,ROLE_USER

还可以将其赋值给变量,并指定作用域:

<sec:authentication property="principal" var="principal" scope="request"/>

2. details:认证的附加信息(IP地址、证件序列号、会话ID等)。

查看admin用户的details属性:

<sec:authentication property="details"/>

页面显示内容如下:

org.springframework.security.web.authentication.WebAuthenticationDetails@21a2c: 
Rem
Spring Security      2017-02-09

    实际开发中用户的信息一般存放在数据库表里,所以我们使用<jdbc-user-service/>元素替代<user-service/>

    现使用Mysql数据库演示,表结构如下:

CREATE TABLE `role` (
    `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '角色编号',
    `name` varchar(60) NOT NULL COMMENT '角色',
    `note` varchar(100) DEFAULT NULL COMMENT '描述',
    PRIMARY KEY (`id`)
);
CREATE TABLE `user` (
    `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
    `username` varchar(60) NOT NULL COMMENT '用户名',
    `password` varchar(60) NOT NULL COMMENT '密码',