- 浏览: 1748149 次
- 性别:
- 来自: 大连
博客专栏
-
Spring数据库访问系列...
浏览量:172832
-
Android学习笔记
浏览量:366569
-
iBatis开发详解
浏览量:188315
-
Objective-C学习...
浏览量:98761
最新评论
-
iLidy:
引用[/c
Hibernate持久化对象的生命周期详解 -
fengzigogo:
您好,有这个项目架构的源码下载地址吗?
一种Java Web应用开发框架的构建(基于Struts2+Spring+FreeMarker)之一 -
spring_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
用Maven构建Java Web开发环境(Jetty容器)之二 -
springdata_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring 3之MVC & Security简单整合开发(二) -
赵庆辉:
看帖回复是美德,楼主讲的很清晰明了,看了豁然开朗.
Java String对象的经典问题(new String())
本文接上一篇继续深入研究Security框架。
Security对数据库验证用户有两种方式,上文提到的是它默认支持的数据库表结构,但基本上用于实际是不现实的,因为我们的数据库都有自己的业务逻辑,所以现在来看看怎么在我们自己的数据库上进行Security框架的用户验证整合,这里给出一个比较通用的数据库权限设计结构:
假设我们的数据表名称为b_user和b_userrole,它们的结构如下:
那么表名,字段名和结构都和Security框架默认的不匹配,只好通过SQL语句来让Security框架识别了,在配置文件的数据库验证部分,我们可以这么来写:
在jdbc-user-service中,我们启用了两个属性,其中放置的是SQL语句,就是我们自定义的用户验证方式,将我们的数据库设计和Security框架相匹配,这里的角色一定是在拦截url标签中配置过的,否则Security框架不能识别用户身份。
启动应用程序,发现这和原来的验证效果是一样的,这就是自定义的数据库验证方式了。也非常简单,就是用SQL语句查询结果匹配Security框架,不过这可能要和自己应用的数据库设计做出调整,尽量做到最小调整。
这里补充一点用户验证方式的配置,我们已经使用了在配置文件里配置用户和数据库验证,一种是支持为数不多的用户,一种是支持数据库大量查询的。对于前者,将配置信息写在XML文件中,和Security框架的配置信息粘在一起,不利于维护。其实Security框架也支持属性文件的配置,我们可以这么来写:
这里把用户信息都写在了users.properties里,我们来看这个属性配置文件:
这里面名/值对的形式排列的,值的字段比较多,我们来逐个解释。admin/user1是用户名,不用多说,等号后面第一位是密码,这里没有加密。第二位是状态,这是可选的,默认是enabled,第三位以后就是用户所拥有的角色了,这么使用和前面的效果也是相同的。
用户验证部分基本就这么多内容,这里没有涉及到LDAP相关部分。下面是访问控制的说明,访问控制是Security框架的另一大特性,可以对其进行自定义的扩展,设计符合我们业务逻辑的控制。这比URL拦截又深入了一步,可以过滤的东西又多了。
设计到访问控制,要引入一个概念,谁来决定能否访问,从而进行控制。Security框架中的访问控制管理有三种方案:至少有一个同意访问,全部同意访问,全部弃权或都同意访问(也就是没有拒绝的)。如何同意?投票产生!Security框架一个可配置的元素就出来了,那就是投票器了。和现实的投票一样,分同意,反对和弃权三类。
下面我们应用第一类访问控制管理:至少有一个投票器同意访问,在配置文件中这么来设置:
上面是默认需要的认证投票,下面就是我们定制的内容了,用来满足特定需要。在消息发布应用中,有这样一个需求,在服务器上登录的用户,给可以删除消息的权限,也就是说不用管理员账户登录,也能删除。那么我们就需要对访问进行控制。在服务器本身登录的用户的IP应该是本地地址127.0.0.1,那么只要IP是它的允许删除,我们来自定义一个投票器来进行投票:
IP地址投票器仅处理属性开头是IP的访问,而支持访问的只能是IP_LOCAL_HOST访问属性。如果访问者的IP是127.0.0.1或者0:0:0:0:0:0:0:1的可以访问,其余的拒绝访问。在配置文件的投票器list中再加入这个类:
之后还要在URL拦截属性中修改配置IP_LOCAL_HOST属性的访问权限:
而且在http中还要配置访问决定管理器,否则是不能识别到IP_LOCAL_HOST的:
此时,在本地用user1用户登录,也具有了删除权限,可以删除文章了。这就是投票器的简单应用了。下面是方法调用安全,这是非常细粒度的安全控制,可以作用于类的方法,那么也就是说,对一块业务逻辑有权限的用户组,可能允许你能添加而不能删除,他能修改而不能添加和删除,这都是可以实现的,因为这已经细化到了方法之上了,一个类的某一个方法给你授权访问,其余方法就访问不到,细化到一个功能点上的访问,安全性有很大的提升。先看看对控制器方法的安全访问,这个配置相对简单,在配置文件中,把安全配置文件和controller的声明放在一起:
这样才能对controller的方法进行控制。不过对方法实行安全控制之后,就没有必要对URL进行拦截了,http配置中的url拦截就都可以去掉了,仅留下登录和退出的就可以了:
虽然这里加入了access-decision-manager-ref="accessDecisionManager",但是对方法的安全不是这里做的,所以这样的话使用user1登录就没有对消息的删除权限了,那么怎么能恢复呢?很简单,在global-method-security中加入它就可以了。这就完成了对控制器方法的配置,那么因为前面都是注解实现的,所以在方法上配置注解就行了,前面代码很全,这里给出一个示例:
只要在注解方法上表明可访问的权限就能实现拦截了。当然在Service上实现拦截同理可得,只是需要注意一下注解声明的所在配置文件,否则可能无效,这确实有点不爽。方法拦截除了注解,还有嵌入配置方式和切点配置方式,这两种都是常规做法,参考官方文档就可以了。
最后一点是V层的拦截,这在前面已经提到了,使用的是Security框架的标签库实现的。可用的标签和属性,直接参考官方文档即可,使用也很方便,这里就不过多说明了。
Spring 3的MVC和Security框架的简单整合就介绍完了,没有过深内容,都是基础应用,如果想深入了解,官方文档是最佳的学习资料。本文的示例代码请直接下载,需要Maven环境来支持,关于Maven环境的配置,可以参考Maven构建Java Web开发环境的介绍。
欢迎交流,希望对使用者有用。
加个过滤器,进行字符转码即可
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
检测到了重复的<global-method-security>,您看看是不是多写了。
Security框架进行验证的是直接在配置文件中编写sql语句和指定密码校验类来进行的,源码中有体现。自定义的数据表的SQL语句在本篇开头有体现。
请安装Maven环境
后续可能会整理一下ACL部分。
Security对数据库验证用户有两种方式,上文提到的是它默认支持的数据库表结构,但基本上用于实际是不现实的,因为我们的数据库都有自己的业务逻辑,所以现在来看看怎么在我们自己的数据库上进行Security框架的用户验证整合,这里给出一个比较通用的数据库权限设计结构:
假设我们的数据表名称为b_user和b_userrole,它们的结构如下:
CREATE TABLE `b_user` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `USERNAME` varchar(20) NOT NULL, `PASSWORD` varchar(32) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 CREATE TABLE `b_userrole` ( `ID` int(11) NOT NULL, `USERID` int(11) NOT NULL, `ROLE` varchar(15) NOT NULL, PRIMARY KEY (`ID`), KEY `FK_USERID_USERROLE` (`USERID`), CONSTRAINT `FK_USERID_USERROLE` FOREIGN KEY (`USERID`) REFERENCES `b_user` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8
那么表名,字段名和结构都和Security框架默认的不匹配,只好通过SQL语句来让Security框架识别了,在配置文件的数据库验证部分,我们可以这么来写:
<security:authentication-manager> <security:authentication-provider> <security:password-encoder ref="md5Encoder" /> <security:jdbc-user-service data-source-ref="dataSource" users-by-username-query="select USERNAME,PASSWORD,'true' as ENABLED from b_user where USERNAME=?" authorities-by-username-query="select u.USERNAME,ur.ROLE as AUTHORITIES from b_user u,b_userrole ur where u.USERNAME=? and u.ID=ur.USERID" /> </security:authentication-provider> </security:authentication-manager>
在jdbc-user-service中,我们启用了两个属性,其中放置的是SQL语句,就是我们自定义的用户验证方式,将我们的数据库设计和Security框架相匹配,这里的角色一定是在拦截url标签中配置过的,否则Security框架不能识别用户身份。
启动应用程序,发现这和原来的验证效果是一样的,这就是自定义的数据库验证方式了。也非常简单,就是用SQL语句查询结果匹配Security框架,不过这可能要和自己应用的数据库设计做出调整,尽量做到最小调整。
这里补充一点用户验证方式的配置,我们已经使用了在配置文件里配置用户和数据库验证,一种是支持为数不多的用户,一种是支持数据库大量查询的。对于前者,将配置信息写在XML文件中,和Security框架的配置信息粘在一起,不利于维护。其实Security框架也支持属性文件的配置,我们可以这么来写:
<security:authentication-manager> <security:authentication-provider> <security:user-service properties="/WEB-INF/users.properties"/> </security:authentication-provider> </security:authentication-manager>
这里把用户信息都写在了users.properties里,我们来看这个属性配置文件:
admin=123,ROLE_ADMIN,ROLE_USER user1=123,ROLE_USER user2=123,enabled,ROLE_USER
这里面名/值对的形式排列的,值的字段比较多,我们来逐个解释。admin/user1是用户名,不用多说,等号后面第一位是密码,这里没有加密。第二位是状态,这是可选的,默认是enabled,第三位以后就是用户所拥有的角色了,这么使用和前面的效果也是相同的。
用户验证部分基本就这么多内容,这里没有涉及到LDAP相关部分。下面是访问控制的说明,访问控制是Security框架的另一大特性,可以对其进行自定义的扩展,设计符合我们业务逻辑的控制。这比URL拦截又深入了一步,可以过滤的东西又多了。
设计到访问控制,要引入一个概念,谁来决定能否访问,从而进行控制。Security框架中的访问控制管理有三种方案:至少有一个同意访问,全部同意访问,全部弃权或都同意访问(也就是没有拒绝的)。如何同意?投票产生!Security框架一个可配置的元素就出来了,那就是投票器了。和现实的投票一样,分同意,反对和弃权三类。
下面我们应用第一类访问控制管理:至少有一个投票器同意访问,在配置文件中这么来设置:
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased"> <property name="decisionVoters"> <list> <bean class="org.springframework.security.access.vote.RoleVoter" /> <bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> </list> </property> </bean>
上面是默认需要的认证投票,下面就是我们定制的内容了,用来满足特定需要。在消息发布应用中,有这样一个需求,在服务器上登录的用户,给可以删除消息的权限,也就是说不用管理员账户登录,也能删除。那么我们就需要对访问进行控制。在服务器本身登录的用户的IP应该是本地地址127.0.0.1,那么只要IP是它的允许删除,我们来自定义一个投票器来进行投票:
package org.ourpioneer.board.security; import java.util.Collection; import org.springframework.security.access.AccessDecisionVoter; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.WebAuthenticationDetails; public class IPAddressVoter implements AccessDecisionVoter { public static final String IP_PREFIX = "IP_"; public static final String IP_LOCAL_HOST = "IP_LOCAL_HOST"; public boolean supports(ConfigAttribute attribute) { return attribute.getAttribute() != null && attribute.getAttribute().startsWith(IP_PREFIX); } public boolean supports(Class<?> clazz) { return true; } public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) { if (!(authentication.getDetails() instanceof WebAuthenticationDetails)) { return ACCESS_DENIED; } WebAuthenticationDetails details = (WebAuthenticationDetails) authentication .getDetails(); String address = details.getRemoteAddress(); int result = ACCESS_ABSTAIN; for (ConfigAttribute config : attributes) { result = ACCESS_DENIED; if (IP_LOCAL_HOST.equals(config.getAttribute())) { if (address.equals("127.0.0.1") || address.equals("0:0:0:0:0:0:0:1")) { return ACCESS_GRANTED; } } } return result; } }
IP地址投票器仅处理属性开头是IP的访问,而支持访问的只能是IP_LOCAL_HOST访问属性。如果访问者的IP是127.0.0.1或者0:0:0:0:0:0:0:1的可以访问,其余的拒绝访问。在配置文件的投票器list中再加入这个类:
<bean class="org.ourpioneer.board.security.IPAddressVoter" />
之后还要在URL拦截属性中修改配置IP_LOCAL_HOST属性的访问权限:
<security:intercept-url pattern="/messageDelete.htm" access="ROLE_ADMIN,IP_LOCAL_HOST" />
而且在http中还要配置访问决定管理器,否则是不能识别到IP_LOCAL_HOST的:
<security:http access-decision-manager-ref="accessDecisionManager">
此时,在本地用user1用户登录,也具有了删除权限,可以删除文章了。这就是投票器的简单应用了。下面是方法调用安全,这是非常细粒度的安全控制,可以作用于类的方法,那么也就是说,对一块业务逻辑有权限的用户组,可能允许你能添加而不能删除,他能修改而不能添加和删除,这都是可以实现的,因为这已经细化到了方法之上了,一个类的某一个方法给你授权访问,其余方法就访问不到,细化到一个功能点上的访问,安全性有很大的提升。先看看对控制器方法的安全访问,这个配置相对简单,在配置文件中,把安全配置文件和controller的声明放在一起:
<context:component-scan base-package="org.ourpioneer.board.web" /> <security:global-method-security jsr250-annotations="enabled" secured-annotations="enabled" />
这样才能对controller的方法进行控制。不过对方法实行安全控制之后,就没有必要对URL进行拦截了,http配置中的url拦截就都可以去掉了,仅留下登录和退出的就可以了:
<security:http access-decision-manager-ref="accessDecisionManager"> <security:form-login login-page="/login.jsp" login-processing-url="/login" default-target-url="/messageList.htm" authentication-failure-url="/login.jsp?error=true" /> <security:logout logout-success-url="/login.jsp" /> </security:http>
虽然这里加入了access-decision-manager-ref="accessDecisionManager",但是对方法的安全不是这里做的,所以这样的话使用user1登录就没有对消息的删除权限了,那么怎么能恢复呢?很简单,在global-method-security中加入它就可以了。这就完成了对控制器方法的配置,那么因为前面都是注解实现的,所以在方法上配置注解就行了,前面代码很全,这里给出一个示例:
@RequestMapping(method = RequestMethod.GET) @Secured( { "ROLE_ADMIN", "IP_LOCAL_HOST" }) public String messageDelete( @RequestParam(required = true, value = "messageId") Long messageId, Model model) { Message message = messageBoardService.findMessageById(messageId); messageBoardService.deleteMeesage(message); model.addAttribute("messages", messageBoardService.listMessages()); return "redirect:messageList.htm"; }
只要在注解方法上表明可访问的权限就能实现拦截了。当然在Service上实现拦截同理可得,只是需要注意一下注解声明的所在配置文件,否则可能无效,这确实有点不爽。方法拦截除了注解,还有嵌入配置方式和切点配置方式,这两种都是常规做法,参考官方文档就可以了。
最后一点是V层的拦截,这在前面已经提到了,使用的是Security框架的标签库实现的。可用的标签和属性,直接参考官方文档即可,使用也很方便,这里就不过多说明了。
Spring 3的MVC和Security框架的简单整合就介绍完了,没有过深内容,都是基础应用,如果想深入了解,官方文档是最佳的学习资料。本文的示例代码请直接下载,需要Maven环境来支持,关于Maven环境的配置,可以参考Maven构建Java Web开发环境的介绍。
欢迎交流,希望对使用者有用。
评论
18 楼
lyjxaut
2014-02-10
真心不错 学习了
17 楼
_MyCould
2014-01-03
16 楼
_MyCould
2014-01-03
15 楼
sarin
2012-10-19
xiaoliouc 写道
当提交信息的时候为中文的时候,出现java.lang.IllegalArgumentException: !utf8,这个需要修改什么地方
加个过滤器,进行字符转码即可
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
14 楼
xiaoliouc
2012-10-18
当提交信息的时候为中文的时候,出现java.lang.IllegalArgumentException: !utf8,这个需要修改什么地方
13 楼
sarin
2011-04-28
liangfeng366 写道
加入<context:component-scan base-package="org.ourpioneer.board.web" />
<security:global-method-security
jsr250-annotations="enabled" secured-annotations="enabled" />
后出现异常:
Configuration problem: Duplicate <global-method-security> detected.
Offending resource: ServletContext resource [/WEB-INF/spring/appServlet/controllers.xml]
<security:global-method-security
jsr250-annotations="enabled" secured-annotations="enabled" />
后出现异常:
Configuration problem: Duplicate <global-method-security> detected.
Offending resource: ServletContext resource [/WEB-INF/spring/appServlet/controllers.xml]
检测到了重复的<global-method-security>,您看看是不是多写了。
12 楼
liangfeng366
2011-04-27
加入<context:component-scan base-package="org.ourpioneer.board.web" />
<security:global-method-security
jsr250-annotations="enabled" secured-annotations="enabled" />
后出现异常:
Configuration problem: Duplicate <global-method-security> detected.
Offending resource: ServletContext resource [/WEB-INF/spring/appServlet/controllers.xml]
<security:global-method-security
jsr250-annotations="enabled" secured-annotations="enabled" />
后出现异常:
Configuration problem: Duplicate <global-method-security> detected.
Offending resource: ServletContext resource [/WEB-INF/spring/appServlet/controllers.xml]
11 楼
liangfeng366
2011-04-27
10 楼
yonghong915
2011-04-02
不错,非常感谢哈!还得回去研究!
9 楼
bolo
2011-01-23
那个login到底是指的哪个类呢?是Security本身自带的吗?
8 楼
sarin
2011-01-22
bolo 写道
请问那个login的登录验证是哪个类?在你的源码中没有看到,另外可否把自定义数据库的表数据提供一下,对于企业级的开发来说,肯定是根据用户名与密码来进行登录验证,不可能把用户与密码,角色写进去,如果要这样做,应该怎么写
Security框架进行验证的是直接在配置文件中编写sql语句和指定密码校验类来进行的,源码中有体现。自定义的数据表的SQL语句在本篇开头有体现。
7 楼
bolo
2011-01-22
请问那个login的登录验证是哪个类?在你的源码中没有看到,另外可否把自定义数据库的表数据提供一下,对于企业级的开发来说,肯定是根据用户名与密码来进行登录验证,不可能把用户与密码,角色写进去,如果要这样做,应该怎么写
6 楼
sarin
2010-12-09
sharkl 写道
楼主代码下下来不能编译或者修改啊!
请安装Maven环境
5 楼
sharkl
2010-12-09
楼主代码下下来不能编译或者修改啊!
4 楼
jelver
2010-12-07
另外,web.xml 文件里面多了个"<",最好修正一下
<<context-param>
<param-name>contextConfigLocation</param-name>
<<context-param>
<param-name>contextConfigLocation</param-name>
3 楼
jelver
2010-12-07
,难得的文章,看得出来楼主平时的习惯应该很细心认真,一口气看完这个续集,期待佳作,加油
2 楼
sarin
2010-12-03
guofengcn 写道
全部讲完了吗?还是还有后续?
后续可能会整理一下ACL部分。
1 楼
guofengcn
2010-12-03
全部讲完了吗?还是还有后续?
发表评论
-
iBatis操作DDL和映射继承
2012-09-09 21:46 9192本文系iBatis开发详解系列文章之iBatis操作D ... -
iBatis查询复杂集合
2012-09-04 20:23 15631本文系iBatis开发详解系列文章之在iBatis查询 ... -
iBatis中使用XML
2012-08-29 19:57 7629本文系iBatis开发详解系列文章之在iBatis中使 ... -
iBatis执行非查询语句(CRUD,函数和过程)
2012-08-26 21:40 9257CRUD操作中除了查询操作,其他都统一称为更新操作,因 ... -
Spring数据库访问之iBatis(二)
2012-06-10 13:56 5699接上文,我们继续来研究Spring和iBatis的整合 ... -
Spring数据库访问之iBatis(一)
2012-01-02 18:45 15863为了丰富博客专栏【Spring数据库访问系列】的内容, ... -
我的视频教程《中小企业OA系统》
2011-07-29 22:27 7687经过5个月的制作,和华章合作的《中小企业OA系统》Ja ... -
iBatis分页(基于Struts2和Freemarker)
2011-05-02 10:05 13032之前介绍过基于Hibernate分页的原理和设计,这里 ... -
Spring数据库访问之ORM(三)
2011-03-02 20:35 17549本文接上一篇继续研究。 之前我们使用的是Hib ... -
Spring数据库访问之ORM(二)
2011-02-16 13:19 23309本文接上一篇继续来研究Spring的ORM模块。 ... -
Spring数据库访问之ORM(一)
2011-01-27 10:54 30715Spring数据库访问中另外一大模块就是ORM,ORM ... -
Spring数据库访问之异常处理
2011-01-19 10:29 27430使用JDBC API时,很 ... -
Spring数据库访问(HSQL)(四)
2011-01-16 21:49 14451本文接上一篇继续研究Spring的JDBC模板。 ... -
Spring数据库访问(HSQL)(三)
2011-01-13 10:07 13380本文接上一篇继续研究JDBC模板。 之前说的都 ... -
Spring数据库访问(HSQL)(二)
2011-01-11 11:27 10695上一篇我们介绍了 ... -
Spring数据库访问(HSQL)(一)
2011-01-09 23:34 13741本部分主要介绍Spring的JDBC模板,JDBC模板 ... -
Spring 3之MVC & Security简单整合开发(二)
2010-12-01 20:29 59958本文接上一篇继续 ... -
Spring 3之MVC & Security简单整合开发(一)
2010-11-30 22:00 42413Spring的MVC模块是一种简洁的Web应用框架,实 ... -
iBatis查询select详解
2010-08-07 12:19 40461<select>是iBatis已经映射的语 ... -
iBatis查询API
2010-07-31 13:04 17626先说点基础的内容 ...
相关推荐
用STS(Spring Tool Suite)开发的,spring mvc + spring security 实现的最简单的登录系统,无数据库。
jinshuaitec信息存储项目.Spring Boot 整合Spring MVC,Spring,Mybatis,使用Spring Security做登录验证,希望可以整合微信公众号一起开发
此项目为springmvc、Mybatis、EHcache、maven、Spring security3、activiti5工作流的整合 是一个基于数据库的权限管理demo项目、使用mysql数据库 项目运行前需要构建maven私服 而且有些jar包私服中肯定没有,需要...
Sentinel|[Spring Cloud Alibaba(三)Sentinel之熔断降级](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README3.md) Dubbo|[Spring Cloud Alibaba(四)Spring Cloud与Dubbo的融合]...
直接从网上荡下DWZ的dwz4j企业级Java Web快速开发框架(Mybatis + SpringMVC) + jUI整合应用使用的话,里面的一些内容比较冗余,另外里面缺少权限和security,以及对postgre的数据库使用demo,而最近项目中需要开发...
spring mvc + spring security 整合开发 sarin.iteye.com的源代码
SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一...
第一个 Struts 程式 在 Struts 中整合 Spring 第一个 JSF 程式 在 JSF 中整合 Spring <br> 其它 Spring 提供了简化且一致的方式,让您在使用一些 API 或服务时更加简单。 远程...
8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 8.2.3 工作原理 294 8.3 ...
• 与 Spring Security (原 Acegi Security )整合 只需将某个 flow 声明为“ secured ”,即可利用 Spring Security 来确定当前用户是否有权限运 行 flow 、激发事件等等。 • 更简洁的配置 官方的数据说同一个 ...
8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 8.2.3 工作原理 294 8.3 ...
3.熟悉Spring MVC、Spring Boot、Spring Data、Spring Security的使用,了解Spring的Ioc与Aop思想; 4.拥有基于Spring整合常用框架并进行项目开发的经验,如:Mybatis、Hibernate、Redis、SpringData 5.熟悉基于...
该项目涵盖了从前端页面设计到后端服务开发的全过程,整合了众多流行技术与工具,如Thymeleaf、Spring Data JPA、Spring Security和MySQL等。项目特点包括:用户友好的界面:采用响应式设计,确保在不同设备上都能...
spring 项目项目说明基于Spring家族的360度整合,基本覆盖开发用九成以上的场景,即开即用,主要是详尽的了解项目里面的每个stater跟lib组件及功能,为个人及项目实际开发提供助力,帮组项目快速开发,本项目是maven...
开拓与转载整理不易,逐步随意。尊重他人的劳动成果,转载请注明地址。Spring-Boot-Redis-Session Spring Boot整合Redis,详情请查看... 网页Web使用Tomcat和Spring MVC进行全栈Web开发模板Thymeleaf Thymeleaf模板引擎
1.建立一个Spring开发环境 依赖注入:请参阅Kong店编码阶段的视频 Oracle DB集成 MyBatis整合 2. Spring MVC配置 3.基本的网站帖子管理 4.使用REST方法和Ajax进行注释处理 5. AOP和交易 6.文件上传处理 7.使用...
AlbedoBoot是在Spring Boot基础上构建的一个Java基础开发平台上,以Spring MVC为模型视图控制器,MyBatis为数据访问层,SpringSecurity为权限授权层,Ehcahe对常用数据进行缓存,是JavaEE界的最佳整合。 AlbedoBoot...
【后端技术】技术 说明Spring Boot2 MVC框架 开发的一站式解决方案Spring Security5 认证和授权框架MyBatisPlus3.3.1 基于 MyBatis 框架的快速研发框架MyBatisCode工具 生成 MyBatis 相关代码Jackson 提供了处理 ...
企业级WEB系统框架开发平台 ...Spring2.56、Security2.04权限管理、Struts2、Ibatis2、Flex4.6等这几款主流框架进行整合,并对其进行简单的介绍。 并包括框架的核心数据库。 需要和学习的朋友可以联系我
电子医疗系统Web项目-使用Spring Boot安全-JPA-Rest-Thymeleaf-HQL(HMS) 生物医学与医院领域的项目,涵盖...oc new-app soumyadip007/E-Medical-System-Web-Project-Using-Spring-Boot-Security-MVC-Hibernate-JPA-R