百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

整理关于整合项目框架的过程供大家参考

toyiye 2024-06-21 12:17 9 浏览 0 评论

最近学习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

请大家多多关注我的头条号,谢谢大家

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码