ssh整合shiro后,工程的登录首页login.htm 访问不到404错误
web.xml --只贴出了struts和shiro过滤器的
<!-- shiro权限过滤器 -->
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- shiro的filter-mapping -->
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!--struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
spring.xml
<!--引入shiro配置文件 -->
<import resource="classpath:spring-shiro.xml"/>
<!-- 2. 自动扫描 加载spring管理的对象 -->
<context:component-scan base-package="com"></context:component-scan>
<!-- 3. 加载jdbc.properties 基础配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<!-- 4. 配置第三方数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="initialSize" value="1" />
<property name="maxActive" value="1" />
<property name="maxIdle" value="1" />
<property name="maxWait" value="500" />
<property name="defaultAutoCommit" value="false" />
</bean>
<!-- 5. 配置sessionFactory 连接工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.**.bean</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.hbm2ddl.auto">
${hibernate.hbm2ddl.auto}
</prop>
</props>
</property>
</bean>
<!-- 6. 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="dels*" propagation="REQUIRED" />
<tx:method name="jdels*" propagation="REQUIRED" />
<tx:method name="batchUpdate" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- read-only="true" 其他的方法 不参与事务 -->
<aop:config>
<aop:pointcut expression="execution(* com..service.*Service.*(..))" id="targetMethod"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="targetMethod"/>
</aop:config>
shiro.xml
<!-- 对应于web.xml中配置的那个shiroFilter -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- Shiro的核心安全接口,这个属性是必须的 -->
<property name="securityManager" ref="securityManager"/>
<!-- 要求登录时的链接(登录页面地址),非必须的属性,默认会自动寻找Web工程根目录下的"/login.jsp"页面 -->
<property name="loginUrl" value="/login.htm"/>
<!-- 登录成功后要跳转的连接(本例中此属性用不到,因为登录成功后的处理逻辑在LoginController里硬编码) -->
<!-- <property name="successUrl" value="/" ></property> -->
<!-- 用户访问未对其授权的资源时,所显示的连接 -->
<property name="unauthorizedUrl" value="/html/login.htm"/>
<property name="filterChainDefinitions">
<value>
/login.htm=anon
/css/**=anon
/images/**=anon
/js/**=anon
/js_sun/**=anon
/myjs/**=anon
</value>
</property>
</bean>
<!-- Shiro安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!--注入自定义Realm -->
<property name="realm" ref="myRealm"></property>
</bean>
<!--自定义Realm -->
<bean id="myRealm" class="com.hrgj.oa.qxgl.yhgl.realmUtil.myRealm"/>
<!-- 开启shiro框架注解支持 -->
<!-- <bean id="defaultAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> -->
<!-- <property name="proxyTargetClass" value="true"></property> -->
<!-- </bean> -->
<!-- 配置shiro框架提供的切面,用于创建代理对象 -->
<!-- <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor" /> -->
<!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
相关推荐
基于SpringBoot+Vue的高校科研管理系统毕设全流程实战
在管理信息系统开发中,前后端分离架构已成为主流实践。SpringBoot作为后端框架,凭借自动配置与生态优势简化了服务端构建;Vue的组件化模型则显著提升了前端复用效率。两者结合,配合MySQL的数据持久化能力,能够快速搭建起具备权限控制、数据统计与业务流程流转的综合性平台。高校科研管理系统正是此类架构的典型应用场景:它通过角色划分实现分级审批,通过逻辑外键与索引设计保障数据一致性,并利用数字字典优化状态管理。这类系统不仅解决了科研项目、成果、经费分散管理的痛点,也为开发者提供了从数据库建模到接口设计、从跨
Java人事管理系统源码解析:从SSM架构到企业级开发实战
企业级Java应用开发通常围绕核心框架组合展开,例如经典的SSM架构。其原理是通过分层设计实现业务逻辑的解耦,数据访问层负责与数据库交互,业务逻辑层封装核心计算规则,控制层处理HTTP请求与响应。这种架构的技术价值在于提升代码可维护性、支持复杂事务管理,并能有效实施权限控制等企业级特性。在实际应用场景中,此类架构广泛应用于人力资源、ERP、CRM等后台管理系统,处理员工信息、考勤薪资等核心业务数据。本文以一个人事管理系统项目为例,深入剖析其基于SSM框架的实现细节,涵盖从环境搭建、代码精读到性能优化的完整流
CentOS 7下mod_evasive实战配置与避坑指南
mod_evasive是Apache服务器上用于防御HTTP Flood攻击的轻量级应用层限流模块,其核心原理是在请求解析阶段基于IP维度统计单位时间内的页面访问频次与站点总请求数,触发阈值后即时返回403并临时封禁。该模块不替代iptables或云WAF,而是填补零延迟、低开销、进程内实时响应的防护空白。在CentOS 7环境中,因SELinux默认策略限制、systemd模块加载机制特殊、EPEL源依赖及MPM模型耦合等特性,直接安装易导致配置失效、误封率高或服务崩溃。本文聚焦真实生产场景,结合DoS防
SpringBoot校园二手市场毕设实战:从数据库设计到部署全流程解析
在Java Web开发领域,SpringBoot作为主流的后端框架,以其开箱即用和约定大于配置的特性,极大地简化了企业级应用的构建流程。其核心原理在于通过自动配置和起步依赖,快速整合Web、数据访问、安全等模块,使开发者能聚焦于业务逻辑实现。这一技术价值在于提升了开发效率,降低了项目启动门槛,尤其适合快速构建原型和中小型项目。在电商、内容管理等典型应用场景中,SpringBoot常与MyBatis、MySQL等技术栈协同,实现高内聚、低耦合的系统架构。本文以校园二手市场这一经典毕业设计选题为例,深入剖析如何
基于Springboot和Vue的敬老院管理系统设计与实现
在数字化管理需求日趋普遍的今天,基于Java生态的Web管理系统已成为企业信息化的重要支撑。Springboot框架凭借自动配置、内置容器与快速部署等特性,大幅降低了后端开发门槛;Vue作为现代前端框架,通过组件化开发与前后端分离架构,让界面交互更高效。二者结合,配合RESTful API交互,已成为中小型管理系统的主流技术方案。在敬老院等养老机构中,传统台账管理存在效率低、易出错、信息孤岛等痛点,一套覆盖老人档案、床位分配、费用收缴、护理记录等核心业务的系统,能显著提升运营管理水平。本文围绕Springb


Web 开发
