1. 程式人生 > >SSH專案實戰OA-搭建portal工程

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