在Eclipse中使用Maven建立SpringMVC項目,項目所需軟件及工具能夠在官網下載。Maven、Nexus及Eclipse集成Maven等到此配置完畢。javascript
一、Maven建立Web項目、css
打開Eclipse,File——》New——》other——》Maven——》Maven Projecthtml
選擇好建立Maven項目後點擊Next進行下一步操做,選擇項目存放位置,點擊Next。java
至此項目建立成功,具體結構以下:jquery
二、添加所需Jar包,打開工程下面的pom.xml文件。內容以下git
<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.akwl.main</groupId> <artifactId>SpringMVC_Test</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringMVC_Test Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>SpringMVC_Test</finalName> </build> </project>
修改pom.xml,將項目所需的Jar包添加進工程web
<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.akwl.main</groupId> <artifactId>WebSystem</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>WebSystem Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.springframework.version>4.0.6.RELEASE</project.springframework.version> <project.springframework.groupId>org.springframework</project.springframework.groupId> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- c3po --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.2.1</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-jdbc</artifactId> <version>${project.springframework.version}</version> </dependency> <!-- start spring 核心依賴包 --> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-core</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-context</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-context-support</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-aop</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-aspects</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-tx</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-beans</artifactId> <version>${project.springframework.version}</version> </dependency> <!-- end spring 核心依賴包 --> <!-- start spring mvc --> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-web</artifactId> <version>${project.springframework.version}</version> </dependency> <dependency> <groupId>${project.springframework.groupId}</groupId> <artifactId>spring-webmvc</artifactId> <version>${project.springframework.version}</version> </dependency> <!-- end spring mvc --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.2.Final</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- START SERVLET --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!--文件上傳 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.3</version> </dependency> <!-- 轉json --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> </dependency> <!-- POI Excel數據導入包begin --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> <type>pom</type> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>openxml4j</artifactId> <version>1.0-beta</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.6.0</version> </dependency> <!-- POI Excel數據導入包end --> </dependencies> <build> <finalName>WebSystem</finalName> </build> </project>
修改完pom.xml文件後跟新項目。在項目——》maven——》Update Project完成項目更新。spring
三、Spring配置express
在src/main/resource文件夾下建立spring配置文件apache
( 1)、spring-jdbc.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd" default-autowire="byName"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/classes/jdbc.properties</value> </list> </property> </bean> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> <property name="initialPoolSize" value="${jdbc.initSize}"></property> <property name="minPoolSize" value="${jdbc.minSize}"></property> <property name="maxPoolSize" value="${jdbc.maxSize}"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource"></property> </bean> <!-- 事務通知 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 事務語義 --> <tx:attributes> <!-- 全部以 'get' 打頭的方法只讀 --> <tx:method name="get*" read-only="true"/> <tx:method name="find*" read-only="true"/> <tx:method name="show*" read-only="true"/> <tx:method name="login" read-only="true"/> <!-- 其餘方法採用默認事務設置 --> <tx:method name="*"/> </tx:attributes> </tx:advice> <!-- 事務切入點 --> <aop:config> <!-- AspactJ表達式 --> <aop:pointcut id="serviceMethods" expression="execution(* *..service.*Service.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/> </aop:config> </beans>
(2)、spring-mvc-servlet.xml
<?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:p="http://www.springframework.org/schema/p" 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.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!-- HandlerMapping,HandlerAdapter,ViewResolver,靜態資源訪問 --> <!-- 重點掃描action包下的Controller --> <context:component-scan base-package="com.akwl.websystem.web.action.**"></context:component-scan> <!-- 已經註冊了 基於Annotation HandlerMapping,HandlerAdapter 添加了常見的類型轉換 --> <mvc:annotation-driven validator="validator" conversion-service="convertionService"> <mvc:message-converters> <!-- 處理Ajax請求時返回json字符串的編碼 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property> </bean> <!-- 配置一個轉換器工廠 --> <bean id="convertionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <!-- 未來更多的自定義轉換器註冊到這裏若是出cuo,則顯示:typeMismatch.Target類型=內容 --> <!-- <bean class="cn.hchx.convert.String2Date"> <property name="pattern" value="yyyy-MM-dd"></property> </bean> --> </list> </property> </bean> <!-- 關於返回頁面的 ViewResolver--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name="order" value="2"></property> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="contentType" value="text/html" /> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 採用默認的處理 --> <mvc:default-servlet-handler/> <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926" /> <mvc:resources mapping="/js/**" location="/js/" cache-period="31556926" /> <mvc:resources mapping="/css/**" location="/css/" cache-period="31556926" /> <!-- SpringMVC上傳文件時,須要配置MultipartResolver處理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上傳文件的總大小不能超過200000KB。注意maxUploadSize屬性的限制不是針對單個文件,而是全部文件的容量之和 --> <property name="maxUploadSize" value="200000000"/> <property name="uploadTempDir" value="/upload"></property> </bean> <!-- SpringMVC在超出上傳文件限制時,會拋出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 該異常是SpringMVC在檢查上傳的文件信息時拋出來的,並且此時尚未進入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException異常時,自動跳轉到/WEB-INF/jsp/error_fileupload.jsp頁面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> <prop key="java.io.IOException">error_fileupload</prop> </props> </property> </bean> </beans>
(3)、spring.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- Spring 對 I18n的支持 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="com.bluedigits.ebookserver.web.EBookResource"></property> </bean> <!-- 全部的dao注入 begin <bean id="**Dao" class="com.**.dao.impl.**DaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> --> <!-- 全部的dao注入 end --> <!-- 全部的service注入 begin <bean id="**Service" class="com.**.service.impl.**ServiceImpl"> <property name="**Dao" ref="**Dao"></property> </bean> --> <!-- 全部的service注入 end --> </beans>
(4)、修改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>webSystem</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- Spring的核心容器配置,Ioc容器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring.xml /WEB-INF/classes/spring-*.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring mvc 的中央控制器配置 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring-mvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- 注意可以接收全部請求包括靜態,所以注意靜態資源訪問 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 亂碼解決方案 :過濾器 --> <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> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- log4j****************************************** --> <!--這裏配置了一個listener,也能夠配置servlet --> <context-param> <param-name>webAppRootKey</param-name> <param-value>myWebApp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- ************************************************** --> </web-app>
到此SpringMVC項目建立完成,測試項目,建立LoginAction測試文件
package com.akwl.websystem.web.action; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.akwl.websystem.web.util.CookieHelper; /** * * @author peter * @createDate 2015年4月10日上午10:42:19 * @Email zhhy072588@163.com * @see * @version 1.0.0 */ @Controller @RequestMapping("/login") public class LoginAction { @RequestMapping("/checklogin.do") public void CheckLogin(HttpServletRequest request, HttpServletResponse response) { //返回數據 response.setContentType("application/html;charset=UTF-8"); //返回json格式 // response.setContentType("application/json;charset=UTF-8"); String name = request.getParameter("name"); try { PrintWriter outPrintWriter = response.getWriter(); if (name.equals("peter")) { //寫入Cookie 保存用戶的編號 CookieHelper cookieHelper =new CookieHelper(request, response, "UTF-8"); cookieHelper.writeCookie("userID", "1"); outPrintWriter.write("OK"); outPrintWriter.flush(); outPrintWriter.close(); }else { { outPrintWriter.write("用戶名或密碼錯誤!請重新輸入!"); outPrintWriter.flush(); outPrintWriter.close(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
四、項目測試運行
http://localhost:8080/SpringMVC_Test/login/checklogin.do?name=peter
返回「OK」項目建立成功。
五、添加easyUI
在項目中建立以下目錄
打開下載好的jquery-easyui-1.4.2文件,將文件夾下面除demo、demo_mobile、src外文件拷貝到如下目錄js/JqueryEasyUI中。
測試頁面 index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <link href="./content/js/JqueryEasyUI/themes/default/easyui.css" rel="stylesheet" /> <link href="./content/js/JqueryEasyUI/themes/icon.css" rel="stylesheet" /> <script src="./content/js/JqueryEasyUI/jquery.min.js"></script> <script src="./content/js/JqueryEasyUI/jquery.easyui.min.js"></script> <script src="./content/js/JqueryEasyUI/locale/easyui-lang-zh_CN.js"></script> <style> #top { text-shadow: 3px 3px 3px red, 6px 6px 6px black, 10px 10px 10px Blue; text-align: center; } #body { overflow-x: hidden; overflow-y: hidden; } .write_a a { color: #FFF; text-decoration: none; } </style> <script> $(function() { initPage(); initData(); }); function initPage() { //讀取動態變化的時間 ReadDateTimeShow(); //綁定菜單按鈕的點擊事件 BindMenuClickEvent(); //這裏實現對時間動態的變化 var setTimeInterval = setInterval(ReadDateTimeShow, 1000); //Tab頁籤的實現 $("#worktab").tabs({}); } function showMenu() { $("#menuList").layout(options) var parentMenu = $("<div class=\"easyui-accordion\" style=\"width:300px;height:200px;\"> hello </div>"); $("#menuList").append(parentMenu); } function initData() { } //綁定菜單按鈕的點擊事件 MenuLink function BindMenuClickEvent() { $(".MenuLink") .click( function() { //獲取按鈕裏面的src屬性 var src = $(this).attr("src"); //將主框架的iframe跳轉到菜單指向的地址 //$("#frmWorkArea").attr("src", src); //獲得節點的名字來放去Title var title = $(this).text(); //拼接一個Iframe標籤 var str = '<iframe id="frmWorkArea" width="100%" height="100%" frameborder="0" scrolling="yes" src="' + $(this).attr("src") + '"></iframe>' //首先判斷用戶是否已經單擊了此項,若是單擊了直接獲取焦點,負責打開 var isExist = $("#worktab").tabs('exists', title); if (!isExist) { //添加tab的節點,調用easyUITab標籤的方法 $("#worktab").tabs('add', { title : title, content : str, iconCls : 'icon-save', closable : true }); } else { //若是存在則獲取焦點 $("#worktab").tabs('select', title); } }); } //讀取動態變化的時間 function ReadDateTimeShow() { var year = new Date().getFullYear(); var month = new Date().getMonth() + 1; var day = new Date().getDate(); var time = new Date().toLocaleTimeString(); var addDate = year + "年" + month + "月" + day + "日,時間:" + time; $("#date").text(addDate); } </script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { $(this).hide(); }) }) </script> </head> <body class="easyui-layout"> <!--------------------------------------網站頭部開始(TOP)--------------------------------------> <div data-options="region:'north',split:false" style="height: 100px;"> <div class="easyui-layout" data-options="fit:true" style="background: #3591c1;"> <div style="text-align: left; background: #3591c1;"> <h1></h1> <div style="margin-left: 50px; float: left;"> <img src="content/images/toplogo.png" height=60px width=60px /> </div> <div style="margin-left: 50px; float: left;"> <img src="content/images/photo.png" height=60px width=60px style="margin-left: 100px" /> </div> <div style="margin-left: 20px; float: left;"> <div style="height: 11px"></div> <span style="font-size: 19px; color: #FFF;"> Peter ID帳號:201107010119 </span> <div style="height: 6px"></div> <span style="font-size: 15px; color: #FFF;" class="write_a"> <a href="#">我的資料</a> | <a href="#">退出</a> </span> </div> <div style="clear: both;"></div> </div> <div style="text-align: right;"> 當前時間:<b id="date"></b>   <a href="./login.jsp"><b>註銷</b></a> </div> </div> </div> <!--------------------------------------網站頭部結束(TOP)--------------------------------------> <!--------------------------------------網站菜單欄開始(Left)--------------------------------------> <div data-options="region:'west',split:false" title="菜單導航" style="width: 150px; padding: 1px; overflow: hidden;"> <div id="menubox" class="easyui-accordion" data-options="fit:true,border:false"> <jsp:include page="${request.getContextPath}/userPrivileges/showUserMenu.do"></jsp:include> </div> </div> <!--------------------------------------網站結束(Left)--------------------------------------> <!--------------------------------------網站中間部分開始(Center) 麪包屑--------------------------------------> <div data-options="region:'center'" style="overflow: hidden;"> <div id="worktab" fit="true"> <div title="歡迎頁面" data-options="cache:false"> <iframe id="frmWorkArea" width="100%" height="99%" frameborder="0" scrolling="yes" src="./View/main.jsp"></iframe> </div> </div> </div> <!--------------------------------------網站中間部分結束(Center)--------------------------------------> <!--------------------------------------網站右邊菜單開始(Right)--------------------------------------> <div data-options="region:'east',iconCls:'icon-reload',split:false" title="日曆信息" style="width: 240px;"> <div class="easyui-calendar" style="width: 230px; height: 230px;"></div> <div style="width: 230px">苦心人,天不負,臥薪嚐膽,百二秦關今屬楚</div> </div> <!--------------------------------------網站右邊菜單結束(Right)--------------------------------------> <!-------------------------------------網站頭部開始(Foot)--------------------------------------> <div data-options="region:'south',split:false" title="" style="height: 60px; background: #3591c1;"> <div class="easyui-layout" style="background: #3591c1;"> <div style="text-align: center; padding: 10px;">版權全部:甘肅安科物聯通訊技術有限公司 </div> </div> </div> <!--------------------------------------網站頭部結束(Foot)--------------------------------------> </body> </html>
到此springmvc+easyUI的Web工程建立成功,後續還須要添加DAO和Server層