最近学习spring框架,学习中总是磕磕绊绊的,出现这样或者那样的问题,于是就像写一篇笔记,将spring,springmvc,hibernate框架整合的过程,以及简单的实现记录下来,一来加深印象,二来一遍以后忘记好找资料(...)当然,初学者也可以借鉴一下。
平台:eclipse 数据库:mysql jar管理:maven
1首先看看我整个项目的结构
2.开始配置配置文件,主要有web.xml, applicationContext.xml, SpringDispatcher-servlet.xml,pom.xml 这四个文件
web.xml文件如下(主要是配置spring IOC容器,springmvc的dispacherServlet, 编码的格式化:防止出现乱码,SessionFilter过滤器:防止session异常。这里主要注意的是路径问题,由于楼主的配置文件是放在src下的config包中的,所以配置的时候用classpath:包名/配置文件名.xml的形式;如果放在WebContext下,直接写文件名就行, WEB-INF下就是/WEB-INF/文件名.xml,以此类推。。)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/SpringDispatcher-servlet.xml
/WEB-INF/applicationContext-callJob.xml
</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.idsra_root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<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>
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.flv</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpeg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.bmp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.properties</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>
<!-- Miscellaneous -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<error-page>
<error-code>400</error-code>
<location>/errors/generalError.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errors/generalError.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/errors/generalError.jsp</location>
</error-page>
<error-page>
<error-code>405</error-code>
<location>/errors/generalError.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/errors/generalError.jsp</location>
</error-page>
</web-app>
SpringDispatcher-servlet.xml文件如下(主要是添加一个注解扫描,然后就是视图解析器。其中prefix表示的是跳转后的页面放置的前缀路径,suffix表示的是后缀名,这个好理解。)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<import resource="classpath:applicationContext.xml" />
<!-- DispatcherServlet Context: defines this servlet's request-processing
infrastructure -->
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>classpath:/spring-excel-views.xml</value>
</property>
</bean>
<!-- Scans within the base package of the application for @Components to
configure as beans -->
<!-- @Controller, @Service, @Configuration, etc. -->
<context:annotation-config />
<context:component-scan base-package="com.claridy" />
<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven />
<!-- Resolve logical view names to .jsp resources in the /WEB-INF/views
directory -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<!-- Internationalization -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename">
<value>classpath:/i18n/messages</value>
</property>
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<mvc:resources mapping="/document/**" location="/document/" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設置上傳文件的最大尺寸為10MB -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
</beans>
applicationContext.xml配置如下(1.注解扫描 2.加载db.properties文件:配合数据库连接池配置实用,这里的路径与web.xml中路径同理 3.配置数据源:与dp.properties中的各个属性对应 4.配置sessionFactory:配置hibernate中的一些方言,属性等,这里将这些写在spring配置文件中,去除了hibernate.cfg.xml文件,当然也可以将添加这个文件,只需在sessionFactory中添加映射路径即可 5.配置事务管理器 )
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<!-- Allows to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:config.properties</value>
</property>
</bean>
<util:properties id="systemproperties" location="classpath:system.properties"></util:properties>
<!-- Direct JDBC DataSource -->
<bean id="jdbcDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${datasource.jdbc.driver.name}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<!-- 最小连接数 -->
<property name="minPoolSize" value="10"/>
<!-- 最大连接数 -->
<property name="maxPoolSize" value="15"/>
<!--最大空闲时间,1800秒内未使用则连结被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="1800"/>
<!-- 当连接池里面的连结用完的时候,C3P0一次获得的新连接数 -->
<property name="acquireIncrement" value="3"/>
<!-- 最大的PreparedStatement数量 -->
<property name="maxStatements" value="1000"/>
<!-- 初始连接数 -->
<property name="initialPoolSize" value="10"/>
<!-- 每隔120秒检查连接池里面的空闲连结,单位秒-->
<property name="idleConnectionTestPeriod" value="120"/>
<!-- 从数据库获取新连接失败之后重复尝试的次数 -->
<property name="acquireRetryAttempts" value="100" />
<property name="breakAfterAcquireFailure" value="false" />
<property name="testConnectionOnCheckout" value="false" />
</bean>
<!-- ============================================ -->
<!-- Integration Hibernate -->
<!-- ============================================ -->
<!-- org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean -->
<!-- org.springframework.orm.hibernate3.LocalSessionFactoryBean -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.max_fetch_depth">5</prop>
<prop key="hibernate.query.substitutions">true 1, false 0</prop>
<!-- connection release mode : JDBC使用after_transaction;JTA使用after_statement -->
<prop key="hibernate.connection.release_mode">after_transaction</prop>
<!-- Important : This will drop all tables and create new tables -->
<!-- <prop key="hibernate.hbm2ddl.auto">create</prop> -->
</props>
</property>
<property name="dataSource" ref="${datasource.type}" />
<property name="packagesToScan" value="com.claridy" />
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Transaction Manager -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Annotation Driven Transactions -->
<tx:annotation-driven transaction-manager="txManager" />
<import resource="appCtx_Service.xml" />
<!-- Handling Exception -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<map>
<!-- <entry key="org.springframework.web.multipart.MaxUploadSizeExceededException" value="errors/maxuploadsize" /> -->
<!-- <entry key="DataAccessException" value="errors/dataError" /> -->
<!-- <entry key="com.stuff.MyAppRuntimeException" value="errors/appNncheckedError" /> -->
<!-- <entry key="com.stuff.MyAppCheckedException" value="errors/appCheckedError" /> -->
</map>
</property>
<property name="defaultErrorView" value="errors/generalError"/>
</bean>
<!-- tiles配置器-->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/pages/tiles/defs/tiles-defs.xml</value>
</list>
</property>
</bean>
<!-- tiles页面解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
</beans>
pom.xml主要是maven的jar包路径
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.claridy</groupId>
<artifactId>lockerAdmin</artifactId>
<name>lockerAdmin</name>
<packaging>war</packaging>
<version>0.1</version>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.hibernate-version>3.6.9.Final</org.hibernate-version>
<spring-security-version>3.0.7.RELEASE</spring-security-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<!-- we dont want the version to be part of the generated war file name -->
<finalName>${project.artifactId}</finalName>
<defaultGoal>compile</defaultGoal>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring-security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring-security-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<!-- sql server driver add by RemberSu -->
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-cas-client</artifactId>
<version>${spring-security-version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${org.hibernate-version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${org.hibernate-version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.2.145</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.1.2.Final</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>20030211.134440</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.1.RELEASE</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.3</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>4.1.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.6</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2</artifactId>
<version>1.4.1</version> </dependency> -->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</project>
config.properties主要是数据库连接信息
#################################################################
# Configuration
#################################################################
#### type of datasource definition: jdbcDataSource
datasource.type = jdbcDataSource
datasource.url = jdbc:mysql://192.168.20.1:3306/lockeradmin
datasource.username = root
datasource.password = claridy20160302
datasource.jdbc.driver.name = com.mysql.jdbc.Driver
hibernate.dialect = org.hibernate.dialect.MySQLDialect
#### Debug
hibernate.show_sql = false
hibernate.format_sql = false
3 代码编写
首先创建对应的domain,通过注解的方式和数据库表对应
package com.claridy.domain;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table (name = "ra_sys_acuser")
public class SystemUser implements Serializable
{
private static final long serialVersionUID = -6525405004364560995L;
@Id
private String usrno;
private String usrname;
private String usrpwd;
private String creator;
private Date created_date;
private String last_update;
private Date last_update_date;
public String getUsrno() {
return usrno;
}
public void setUsrno(String usrno) {
this.usrno = usrno;
}
public String getUsrname() {
return usrname;
}
public void setUsrname(String usrname) {
this.usrname = usrname;
}
public String getUsrpwd() {
return usrpwd;
}
public void setUsrpwd(String usrpwd) {
this.usrpwd = usrpwd;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public Date getCreated_date() {
return created_date;
}
public void setCreated_date(Date created_date) {
this.created_date = created_date;
}
public String getLast_update() {
return last_update;
}
public void setLast_update(String last_update) {
this.last_update = last_update;
}
public Date getLast_update_date() {
return last_update_date;
}
public void setLast_update_date(Date last_update_date) {
this.last_update_date = last_update_date;
}
}
创建dao以及service
package com.claridy.common.mechanism.dao.hibernateimpl;import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.claridy.common.mechanism.dao.ISys_UserDAO;
import com.claridy.domain.SystemUser;
@Repository
public class Sys_UserDAO extends BaseDAO implements ISys_UserDAO {
@Autowired
public Sys_UserDAO(HibernateTemplate hibernateTemplate) {
setHibernateTemplate(hibernateTemplate);
}
@SuppressWarnings("unchecked")
public SystemUser getUser(String username,String password){
String hql = "from SystemUser where usrno='" + username + "' and usrpwd='" + password + "'";
Session session = this.getSession();
Query query = session.createQuery(hql);
List<SystemUser> list = query.list();
if (list.size() > 0) {
return list.get(0);
} else {
return new SystemUser();
}
}
}
package com.claridy.common.mechanism.dao;import com.claridy.domain.SystemUser;
public interface ISys_UserDAO extends IBaseDAO
{
public SystemUser getUser(String username,String password);
}
package com.claridy.common.mechanism.facase;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.claridy.common.mechanism.dao.ISys_UserDAO;
import com.claridy.domain.SystemUser;
@Service
public class LoginService {
@Autowired
protected ISys_UserDAO sysuserdao;
/**
* 检验后台登录
*
* @param username
* @param password
* @return
*/
public SystemUser loginCheck(String username, String password) {
return sysuserdao.getUser(username, password);
}
}
再创建对应的controller
package com.claridy.admin.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.claridy.admin.form.AdminLoginForm;
import com.claridy.common.mechanism.facase.LoginService;
import com.claridy.common.mechanism.facase.SysMenuService;
import com.claridy.common.util.SystemProperties;
import com.claridy.domain.SystemUser;
/**
* Handles requests for the application home page.
*/
@Controller
public class AdminHomeControllerRa {
@Autowired
public SystemProperties SystemProperties;
@Autowired
public SysMenuService sysMenuService;
@Autowired
private LoginService loginservice=null;
@RequestMapping(value = "")
public String goHome(HttpServletRequest request, Model model) {
return "redirect:/login";
}
@RequestMapping(value = "/login")
public String login(HttpServletRequest request,AdminLoginForm
loginForm, Model model) {
if (request.getSession().getAttribute("sys_user") != null) {
return "idsraAdmin.home";
}else{
String userName = loginForm.getUsername();
String passWord = loginForm.getPassword();
String mess="";
AdminLoginForm lf = new AdminLoginForm();
if(loginForm.getUsername()==null||"".equals(loginForm.getUsername())||loginForm.getPassword()==null||"".equals(loginForm.getPassword())){
if(loginForm.getFlag()!=null&&!"".equals(loginForm.getFlag())){
mess="账号或密码不能为空";
}
lf.setMessage(mess);
model.addAttribute("loginForm", lf);
return "system/adminLogin";
}else{
SystemUser sys_user = loginservice.loginCheck(userName.trim(), passWord.trim());
if (sys_user != null && sys_user.getUsrno()!=null && sys_user.getUsrpwd()!=null) {
request.getSession().setAttribute("sys_user", sys_user);
return "redirect:/home";
} else {
if(loginForm.getFlag()!=null&&!"".equals(loginForm.getFlag())){
mess="账号或密码错误";
}
lf.setMessage(mess);
model.addAttribute("loginForm", lf);
return "system/adminLogin";
}
}
}
}
//从Spring Security取得使用者登入资料
@RequestMapping(value = "/currentUserInfo", method = RequestMethod.POST)
public @ResponseBody SystemUser getCurrentUser(HttpServletRequest request) {
SystemUser sys_user = null;
if (request.getSession().getAttribute("sys_user") != null) {
sys_user=(SystemUser)request.getSession().getAttribute("sys_user");
}
return sys_user;
}
//登出
@RequestMapping(value = "/logout")
public String logout(HttpServletRequest request, Model model) {
request.getSession().invalidate();
AdminLoginForm lf = new AdminLoginForm();
model.addAttribute("loginForm", lf);
return "redirect:/home";
}
// 处理登录信息
@RequestMapping(value = "/doLogin", method = { RequestMethod.GET,
RequestMethod.POST })
public String doLogin(HttpServletRequest request, AdminLoginForm
loginForm, Model model) throws Exception {
String userName = loginForm.getUsername().trim();
String passWord = loginForm.getPassword().trim();
SystemUser sys_user = loginservice.loginCheck(userName, passWord);
if (sys_user != null && sys_user.getUsrno()!=null && sys_user.getUsrpwd()!=null) {
request.getSession().setAttribute("sys_user", sys_user);
return "redirect:/home";
} else {
String mess="账号或密码错误";
request.setAttribute("mess", mess);
return "redirect:/";
}
}
//首页
@RequestMapping(value = "/home")
public String home(HttpServletRequest request, Model model) {
if (request.getSession().getAttribute("sys_user") != null) {
return "idsraAdmin.home";
}else{
AdminLoginForm lf = new AdminLoginForm();
model.addAttribute("loginForm", lf);
return "redirect:/";
}
}
//Menu
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/menu", method = RequestMethod.POST )
public @ResponseBody List menu(Model model) {
sysMenuService.genSysMenu();
return sysMenuService.getSys_MenuList();
}
}
4 登录页面代码编写
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<c:set scope="application" var="baseHref">
${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/
</c:set>
<BASEHREF="${baseHref}">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8" />
<title>电子资源远端认证系统管理端</title>
<link href="css/system/style.css" rel="stylesheet" type="text/css" />
<script>
function doLogin(){
var url="${baseHref}login";
document.myform.action = url;
document.myform.submit();
}
document.onkeydown = onKeyUpSubmit;
function onKeyUpSubmit(evt) {
evt = (evt) ? evt : ((window.event) ? window.event : ""); //兼容IE和Firefox获得keyBoardEvent对象
var key = evt.keyCode?evt.keyCode:evt.which;//兼容IE和Firefox获得keyBoardEvent对象的键值
if (key == 13){
var url="${baseHref}login";
document.myform.action = url;
document.myform.submit();
}
}
</script>
</head>
<body>
<form:form name="myform" action="" method="post" modelAttribute="loginForm">
<div id="container">
<div id="top">
<div id="logo"><img src="images/system/logo.png" width="220" height="70" />
</div>
</div>
<div id="down">
<div id="login">
<label for="textfield"></label>
<input name="username" type="text" class="from" id="username" value="" />
<br />
<input name="password" type="password" class="from1" id="password" value="" />
<form:hidden path="flag" value="no"/>
<br />
<div align="center" style="margin-top: 10px;"><span style="color:red;">${loginForm.message}</span></div>
<div id="btn">
<img src="images/system/button.png" style="cursor: pointer;" onKeyPress="doLogin()"onClick="doLogin()"width="213" height="51" border="0" />
</div>
</div>
</div>
</div>
</form:form>
</body>
</html>
5 启动项目,进行测试
项目源码可以在我的百度云进行下载:
链接: https://pan.baidu.com/s/1qXEowsk 密码: kwjs
请大家多多关注我的头条号,谢谢大家