SSH專案實戰OA-搭建portal工程
SSH專案實戰OA-搭建portal工程
在上一篇文章中,我們搭建好OA-system工程,現在我們需要搭建前臺工程OA-portal,和搭建OA-system的方法類似,也是使用maven搭建portal工程
搭建OA-portal工程
和OA-system專案一樣,這個pom專案不需要引入任何依賴
搭建OA-portal-web工程
新增依賴:這個是web工程,所以要新增spring,struts2,servlet的依賴
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.QEcode</groupId> <artifactId>OA-portal</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>OA-portal-web</artifactId> <packaging>war</packaging> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!-- JSP相關 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <scope>provided</scope> </dependency> <!-- struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts.version}</version> </dependency> </dependencies> </project>
由於現在我們只需要顯示出頁面,所以現在就只建立web工程,等之後還需要其他工程的時候再建立吧
在建立完web工程後,記得要建立web.xml檔案----------------
SSH框架--表現層整合
從現在開始,我們的專案正式開始了,這是值得高興的事,那麼接下來,讓我們整合struts2和spring
在OA-portal-web目錄下的src/main/resources中新建資料夾spring,並在資料夾中新建xml檔案applicationContext.xml.
applicationContext.xml內容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 配置spring容器建立時要掃描的包 --> <context:component-scan base-package="com.QEcode.OA.controller"></context:component-scan> </beans>
從上可以看到我們applicationContext.xml檔案中配置的掃描包是com.QEcode.OA.controller,因此我們需要建立這麼一個包
在配置好applicationContext.xml檔案後,我們繼續配置struts2的檔案,在src/main/resources中新建資料夾struts,並在資料夾中新建xml檔案struts.xml.配置內容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置Struts2常量 --> <!-- 禁用動態方法呼叫 --> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <!-- 開啟開發模式,只在專案開發階段配置 --> <constant name="struts.devMode" value="true" /> <!-- 配置訪問字尾為action --> <constant name="struts.action.extension" value="action"/> <!-- 把主題配置成simple --> <constant name="struts.ui.theme" value="simple" /> </struts>
在配置完spring和struts後,別忘了,我們還需要在web.xml檔案配置spring和struts的監聽器現在我們只需寫一些基本的配置內容,其他諸如action,interceptors等配置等需要的時候再寫.
<?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" version="2.5">
<display-name>OA-portal-web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- spring載入的監聽器,用於載入applicationContext物件 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<!-- struts2的核心過濾器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
這裡也許有人會發現,struts的配置和平常的不一樣,這是因為,一般情況下,我們會把struts.xml放在專案的根目錄src/下,struts的監聽器預設載入根目錄下的struts.xml.但是在專案中,為了方便管理,我們把struts.xml放在struts目錄下,這樣struts監聽器就無法找到配置檔案,所以必須要我們手動指定配置檔案的位置,同時在<param-value>標籤中,不僅要指定struts.xml的檔案路徑,還要配置struts-default.xml和struts-plugin.xml,這兩個配置檔案是框架自帶的,只要在此處添上就可以。
同時,我們需要在webapp/WEB-INF目錄下建立jsp資料夾以用來存放我們的頁面.還有一些js和cs檔案
工程內的頁面可以從我的github專案中下載獲取
終於弄完了struts2和spring的整合,現在我們OA-portal-web專案執行在Tomcat中,看能不能執行成功.
但是==============注意了:由於我們這個專案是一個分散式系統,每個子系統都執行在不同的Tomcat中,所以我們必須使用一個新的Tomcat並修改Tomcat的埠號.
在自己習慣的目錄下建立一個OATomcat目錄以存放我們專案所用到的Tomcat,並解壓一個Tomcat在目錄中,改名為OA-portal-web
我們需要建立一個文字文件來記錄我們所用到的Tomcat的埠
而至於怎麼檢視和修改Tomcat的埠,可以參考我的一篇部落格
修改tomcat預設埠號
修改完Tomcat後,要將我們修改後的Tomcat配置到eclipse中
開啟eclipse的配置頁面,找到server下的runtime environm
萬里長征已經走過了一半了,讓我們繼續努力.
現在,我們研究一下頁面是如何跳轉的,開啟web/index.jsp
這個index.jsp頁面沒什麼用,只是拿來跳轉的,有struts基礎的人,很容易就知道它會跳轉到homeAction_index.action這個controller中,所以現在我們來寫controller.
在com.QEcode.OA.controller中建立類:HomeAction,並配置頁面跳轉內容
@Controller("homeAction")
@Scope("prototype")//多例模式
public class HomeAction {
public String index(){
return "index";
}
public String top(){
return "top";
}
public String left(){
return "left";
}
public String right(){
return "right";
}
public String bottom(){
return "bottom";
}
}
當然還要在strtus.xml中配置action,為了方便,我們寫action都是使用萬用字元*
<!-- 主頁Action -->
<package name="homeAction" extends="struts-default" namespace="/home">
<action name="homeAction_*" class="homeAction" method="{1}">
<result name="{1}">/WEB-INF/jsp/homeAction/{1}.jsp</result>
</action>
</package>
好了,現在終於可以啟動我們的專案了.
啟動Tomcat,在瀏覽器中輸入:
http://localhost:8080/OA-portal-web/index.jsp
可以看到專案已經成功啟動了,
===============================================================================================
在寫部落格的時候,可能在專案中有一些問題沒有被發現,在我修改後,忘記寫到部落格上,所以我將這個專案上傳到github上,大家可以在github上獲取專案的程式碼
下面是github地址,大家Fork and Star
OA-Reconsitution