使用easyui+spring+springmvc+ibatis搭建一个管理系统的项目,效果图如下:
首先,基于创建一个maven工程,转换为web项目,我的项目结构如下:
我使用的是jetty服务器,jetty的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Serve" class="org.mortbay.jetty.Server">
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host" /></Set>
<Set name="port"><SystemProperty name="jetty.port" default="9090"/></Set>
</New>
</Arg>
</Call>
</Configure>
在pom.xml中引入相关的jar包,web.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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!-- 应用程序名 -->
<display-name>easyui</display-name>
<!-- 应用程序描述说明文字 -->
<description>spring springmvc ibatis easyui</description>
<!-- ServletContext初始化参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!-- 默认起始页面 -->
<welcome-file-list>
<!--welcome-file-list一般情况下只能使用静态网页,如果非要把他配置成SpringMVC的控制器URL就会报错. -->
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- spring security 过滤器
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<!-- 配置监听器,用于初始化 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--Servlet初始化参数,配置springmvc特性 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 登陆过滤 -->
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.cjb.test.filter.MyLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
spring的配置文件applicationContext.xml的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring框架配置文件 -->
<!-- 配置ContextLoaderListener表示,该工程要以spring的方式启动。启动时会默认在/WEB-INF目录下查找applicationContext.xml
作为spring容器的配置文件,这里可以初始化一些bean,如DataSource和iBATIS的集成 -->
<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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
<span style="white-space:pre"> </span>http://www.springframework.org/schema/aop
<span style="white-space:pre"> </span>http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-autowire="byName">
<!-- 自动扫描 所有注解 注册为bean (启动注解)-->
<context:component-scan base-package="com.cjb.test">
<!-- 自动扫描组件,这里要把web下面的 controller去除,他们是在springmvc-servlet.xml中配置的,如果不去除会影响事务管理的。-->
<span style="white-space:pre"> </span><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<span style="white-space:pre"> </span><!-- DataSource定义 -->
<span style="white-space:pre"> </span><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<span style="white-space:pre"> </span><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<span style="white-space:pre"> </span><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
<span style="white-space:pre"> </span><property name="username" value="chengjunbo" />
<span style="white-space:pre"> </span><property name="password" value="chengjunbo" />
<span style="white-space:pre"> </span><property name="maxActive" value="50" />
<span style="white-space:pre"> </span><property name="maxIdle" value="5" />
<span style="white-space:pre"> </span><property name="maxWait" value="5000" />
<span style="white-space:pre"> </span><property name="removeAbandoned" value="true" />
<span style="white-space:pre"> </span><property name="removeAbandonedTimeout" value="5" />
<span style="white-space:pre"> </span></bean>
<span style="white-space:pre"> </span><!-- 配置事务管理器-->
<span style="white-space:pre"> </span><bean id="transactionManager"
<span style="white-space:pre"> </span>class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<span style="white-space:pre"> </span><property name="dataSource" ref="dataSource" />
<span style="white-space:pre"> </span></bean>
<!-- 启动spring事务注解,事务注解尽在此 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<span style="white-space:pre"> </span><bean id="transactionTemplate"
<span style="white-space:pre"> </span>class="org.springframework.transaction.support.TransactionTemplate">
<span style="white-space:pre"> </span><property name="transactionManager" ref="transactionManager" />
<span style="white-space:pre"> </span></bean>
<span style="white-space:pre"> </span><!-- 配置SqlMapClient对象 -->
<span style="white-space:pre"> </span><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<span style="white-space:pre"> </span><property name="dataSource" ref="dataSource" />
<span style="white-space:pre"> </span><property name="configLocation" value="classpath:sql-map-config.xml"/>
<span style="white-space:pre"> </span></bean>
<!--根据sqlMapClien创建一个SqlMapClient模版类-->
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<span style="white-space:pre"> </span><property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
</beans>
springmvc的配置文件springmvc-servlet.xml的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--springmvc-servlet.xml(Springmvc框架配置文件)该文件是springmvc框架配置文件,也是它的核心文件 -->
<!-- Bean头部
配置DispatcherServlet表示,该工程将采用springmvc的方式。启动时也会默认在/WEB-INF目录下查找XXX-servlet.xml作为配置文件,
XXX就是DispatcherServlet的名字,该文件中将配置两项重要的mvc特性:
HandlerMapping,负责为DispatcherServlet这个前端控制器的请求查找Controller;
ViewResolver,负责为DispatcherServlet查找ModelAndView的视图解析器
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName">
<!-- default-autowire="byName",约定优于配置,约定优于配置 -->
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven/>
<!-- 如果当前请求为“/”时,则转发到“/helloworld/index” -->
<mvc:view-controller path="/" view-name="forward:/login.jsp"/>
<!-- 自动扫描,完成bean创建和依赖注入 把标记了@Controller注解的类转换为bean-->
<context:component-scan base-package="com.cjb.test.web.controller" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<!-- 在Controller的某个方法上加@ResponseBody注解,表示该方法的返回结果直接写入HTTP response body中,返回一个字符串,
spring mvc中很好的支持了json格式,配置文件中添加json转换器,如果不加这个注解,你是看不到效果的 -->
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
</bean></list>
</property>
</bean>
<!-- HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!-- 静态资源映射 EasyUI样式,JS配置 -->
<mvc:annotation-driven/>
<mvc:resources location="/jslib/easyui-1.4.3/" mapping="/jslib/easyui-1.4.3/**"/>
<mvc:resources location="/jslib/css/" mapping="/jslib/css/**"/>
<mvc:resources location="/jslib/js/" mapping="/jslib/js/**"/>
<mvc:resources location="/" mapping="/**"/>
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>
</beans>