隨筆-8  評(píng)論-20  文章-4  trackbacks-0
                    就好像騎自行車去遠(yuǎn)行,最開(kāi)始的時(shí)候總是激情澎湃,到了路上越走越發(fā)現(xiàn)只是在苦苦的支撐,不過(guò)等你走完全程,看那些凝固在照片中的風(fēng)景與記憶,你只有一種感覺(jué),滿足。

                   SSH筆記目錄

                   SSH筆記一  用maven構(gòu)建項(xiàng)目(源碼下載ssim1.rar)
                  SSH筆記二  整合hibernate和spring(源碼下載ssim2-maven.rar
                  SSH筆記三  反向生成DAO  優(yōu)化開(kāi)發(fā)目錄(源碼下載ssim3-dao.rar
                  SSH筆記四  整合struts2(源碼下載ssim4-struts2.rar
                  SSH筆記五  整合Tiles2(源碼下載ssim5-tiles2.rar


                  今天我們的任務(wù)是要把struts2整合到項(xiàng)目之中,當(dāng)然先看一下完成之后我們的項(xiàng)目是什么樣子,如圖


                   1.  在pom.xml中添加對(duì)struts2的依賴,
          <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>net.selitech.ssim</groupId>
            
          <artifactId>ssim</artifactId>
            
          <packaging>war</packaging>
            
          <version>1.0-SNAPSHOT</version>
            
          <name>SSIM Maven Webapp</name>
            
          <description> Web application</description>
            
            
          <build>
                  
          <finalName>${artifactId}</finalName>
                  
          <plugins>
                      
          <plugin>
                          
          <groupId>org.apache.maven.plugins</groupId>
                          
          <artifactId>maven-compiler-plugin</artifactId>
                          
          <configuration>
                              
          <source>1.6</source>
                              
          <target>1.6</target>
                              
          <encoding>UTF8</encoding>
                          
          </configuration>
                      
          </plugin>
                      
          <plugin>
                          
          <groupId>org.apache.maven.plugins</groupId>
                          
          <artifactId>maven-surefire-plugin</artifactId>
                          
          <version>2.4.2</version>
                          
          <configuration>
                              
          <skipTests>true</skipTests>
                          
          </configuration>
                      
          </plugin>
                      
          <plugin>
                          
          <artifactId>maven-war-plugin</artifactId>
                          
          <configuration>
                              
          <webappDirectory>${basedir}/src/main/webapp</webappDirectory>
                              
          <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
                          
          </configuration>
                      
          </plugin>
                  
          </plugins>
              
          </build>
              
              
          <dependencies>
                  
          <dependency>
                      
          <groupId>javax.activation</groupId>
                      
          <artifactId>activation</artifactId>
                      
          <version>1.0.2</version>
                      
          <scope>provided</scope>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>javax.transaction</groupId>
                      
          <artifactId>jta</artifactId>
                      
          <version>1.0.1B</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>javax.servlet</groupId>
                      
          <artifactId>servlet-api</artifactId>
                      
          <version>2.4</version>
                      
          <scope>provided</scope>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>javax.servlet.jsp</groupId>
                      
          <artifactId>jsp-api</artifactId>
                      
          <version>2.0</version>
                      
          <scope>provided</scope>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>javax.servlet</groupId>
                      
          <artifactId>jstl</artifactId>
                      
          <version>1.1.2</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>taglibs</groupId>
                      
          <artifactId>standard</artifactId>
                      
          <version>1.1.2</version>
                  
          </dependency>
                  
                  
          <!-- Test Case 依賴 -->
                  
          <dependency>
                      
          <groupId>junit</groupId>
                      
          <artifactId>junit</artifactId>
                      
          <version>4.5</version>
                      
          <scope>test</scope>
                  
          </dependency>
                  
                  
          <!-- spring依賴 -->
                  
          <dependency>
                      
          <groupId>org.springframework</groupId>
                      
          <artifactId>spring-jdbc</artifactId>
                      
          <version>2.5.6</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.springframework</groupId>
                      
          <artifactId>spring-orm</artifactId>
                      
          <version>2.5.6</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.springframework</groupId>
                      
          <artifactId>spring-dao</artifactId>
                      
          <version>2.0.4</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>log4j</groupId>
                      
          <artifactId>log4j</artifactId>
                      
          <version>1.2.15</version>
                  
          </dependency>
                  
                  
          <!-- mysql依賴 -->
                  
          <dependency>
                      
          <groupId>mysql</groupId>
                      
          <artifactId>mysql-connector-java</artifactId>
                      
          <version>5.0.0</version>
                  
          </dependency>
                  
                  
          <!-- hibernate依賴 -->
                  
          <dependency>
                      
          <groupId>org.hibernate</groupId>
                      
          <artifactId>hibernate</artifactId>
                      
          <version>3.2.6.ga</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-dbcp</groupId>
                      
          <artifactId>commons-dbcp</artifactId>
                      
          <version>1.2</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>dom4j</groupId>
                      
          <artifactId>dom4j</artifactId>
                      
          <version>1.6.1</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>cglib</groupId>
                      
          <artifactId>cglib</artifactId>
                      
          <version>2.1_3</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>antlr</groupId>
                      
          <artifactId>antlr</artifactId>
                      
          <version>2.7.6</version>
                  
          </dependency>
                  
          <!-- struts2依賴 -->
                  
          <dependency> 
                      
          <groupId>org.apache.struts</groupId> 
                      
          <artifactId>struts2-core</artifactId> 
                      
          <version>2.1.6</version> 
                  
          </dependency> 
                  
          <dependency> 
                      
          <groupId>org.apache.struts</groupId> 
                      
          <artifactId>struts2-spring-plugin</artifactId> 
                      
          <version>2.1.6</version> 
                  
          </dependency> 
                      
              
          </dependencies>
              
          </project>

                  2.  配置web.xml,添加struts2的過(guò)濾器
          <!DOCTYPE web-app PUBLIC
           "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
           "http://java.sun.com/dtd/web-app_2_3.dtd" 
          >

          <web-app>
          <context-param>
            
          <param-name>contextConfigLocation</param-name>
            
          <param-value>/WEB-INF/classes/application-context.xml</param-value>
           
          </context-param>
            
          <!--struts過(guò)濾器 -->
           
          <filter>
            
          <filter-name>struts2</filter-name>
            
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
           
          </filter>
           
          <filter-mapping>
            
          <filter-name>struts2</filter-name>
            
          <url-pattern>*.action</url-pattern>
           
          </filter-mapping>
           
          <!-- 加載spring配置文件 -->
           
          <listener>
            
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
           
          </listener>
           
          <!-- 設(shè)置歡迎頁(yè) -->
           
          <welcome-file-list>
            
          <welcome-file>login.jsp</welcome-file>
           
          </welcome-file-list>
          </web-app>

                  3.  添加struts.xml配置文件
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >
          <struts>
              
          <constant name="struts.enable.DynamicMethodInvocation" value="false" />
              
          <constant name="struts.devMode" value="false" />
              
          <constant name="struts.objectFactory" value="spring" />
              
              
          <include file="struts/user.xml"></include>
                 
          </struts>
                  4.  配置 user.xml
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >

          <struts> 
              
              
          <package name="user" namespace="/user" extends="struts-default">    
                  
          <action name="login" class="userAction" method="login">
                      
          <result name="input">/login.jsp</result>
                      
          <result name="success" type="redirect">/welcome.jsp</result>
                  
          </action> 
              
          </package>
              
              
          </struts>
                  5.  添加UserAction和UserManager類
          package net.selitech.ssim.web.user;

          import java.util.Map;

          import net.selitech.ssim.dao.SsimUser;
          import net.selitech.ssim.user.UserManager;

          import com.opensymphony.xwork2.ActionContext;
          import com.opensymphony.xwork2.ActionSupport;

          /**
           * 
          @author: juxuejian
           * @filename: UserAction.java
           * @date: Aug 10, 2009 , 11:10:47 PM
           * @description :
           
          */
          public class UserAction extends ActionSupport{
              SsimUser user;
              UserManager userManager;
              
              
          public String login(){
                  
          if(getSession("loginedUser")!=nullreturn SUCCESS;
                  
                  
          try {
                      
          if (getUserManager().checkLogin(user.getUserEmail(), user.getUserPassword())) {
                          
                          
          // 更新登錄次數(shù)
                          user = getUserManager().findByEmail(user.getUserEmail());
                          
          // 修正手工插入數(shù)據(jù)后導(dǎo)致int為null的問(wèn)題
                          
                          
                          
          // 將登錄用戶信息存入 session
                          setSession("username", user.getUserRealname());
                          setSession(
          "loginedUser", user);
                          
                          
                          
          return SUCCESS;
                      } 
          else {
                      }
                  }
          catch (Exception e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  
          return INPUT;
              }
              
              
          public SsimUser getSessionLoginedUser() {
                  SsimUser currentUser 
          = (SsimUser) getSession("loginedUser");
                  
          return currentUser;
              }
              
              
          /**
               * 讀取 session 中的屬性值
               * 
          @param name
               * 
          @return
               
          */
              
          public static Object getSession(String name) {
                  ActionContext ctx 
          = ActionContext.getContext();
                  Map session 
          = ctx.getSession();

                  
          return session.get(name);
              }
              
              
          /**
               * 向 session 設(shè)置屬性值
               * 
          @param name
               * 
          @param value
               
          */
              
          public static void setSession(Object name, Object value) {
                  ActionContext ctx 
          = ActionContext.getContext();
                  Map session 
          = ctx.getSession();
                  session.put(name, value);
              }

              
          public UserManager getUserManager() {
                  
          return userManager;
              }

              
          public void setUserManager(UserManager userManager) {
                  
          this.userManager = userManager;
              }

              
          }

          package net.selitech.ssim.user;

          import java.util.List;

          import net.selitech.ssim.dao.SsimUser;
          import net.selitech.ssim.dao.SsimUserDAO;

          /**
           * 
          @author: juxuejian
           * @filename: UserManager.java
           * @date: Aug 10, 2009 , 11:10:29 PM
           * @description :
           
          */
          public class UserManager {
              SsimUserDAO ssimUserDAO;
              
              
          public boolean checkLogin(String userEmail,String password) throws Exception{
                  
          // 是否存在給定用戶
                  SsimUser user = findByEmail(userEmail);
                  
          if (user == null) {
                      
          //用戶不存在
                      return false;
                  }
                  
          if(user != null && user.getUserPassword() !=  null && user.getUserPassword().equals(password)) {
                      
          return true;
                  }
                  
          return false;
              }
              
              @SuppressWarnings(
          "unchecked")
              
          public SsimUser findByEmail(String userEmail){
                  List
          <SsimUser> users=ssimUserDAO.findByUserEmail(userEmail);
                  
          if(users != null && users.size() > 0) {
                       
          return users.get(0);
                   }         
                   
          return null;
              }

              
          public SsimUserDAO getSsimUserDAO() {
                  
          return ssimUserDAO;
              }

              
          public void setSsimUserDAO(SsimUserDAO ssimUserDAO) {
                  
          this.ssimUserDAO = ssimUserDAO;
              }

          }

                  6.  在Spring的配置文件application-conten.xml中注冊(cè)action和manager
          <?xml version="1.0" encoding="UTF-8"?>
          <beans
              
          xmlns="http://www.springframework.org/schema/beans"
              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-2.5.xsd">

              
          <import resource="beans/data-source.xml" />
              
          <import resource="beans/ssim-dao.xml" />
              
          <import resource="beans/ssim-user.xml" />
              
              
          <bean id="configurator" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                  
          <property name="locations">
                      
          <list>
                      
          <value>/WEB-INF/ssimdb-config.properties</value>
                      
          </list>
                  
          </property>
              
          </bean>
              
          </beans>
          ssim-user.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"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
              
              
          <bean id="userManager" class="net.selitech.ssim.user.UserManager">
                  
          <property name="ssimUserDAO">
                      
          <ref bean="SsimUserDAO" />
                  
          </property>
              
          </bean>
              
          <bean id="userAction" class="net.selitech.ssim.web.user.UserAction">
                  
          <property name="userManager">
                      
          <ref bean="userManager"/>
                  
          </property>
              
          </bean>
          </beans>
                  7. 添加login.jsp和 welcome.jsp
          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          <%
          String path = request.getContextPath();
          String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
          %>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
            
          <head>
              
          <base href="<%=basePath%>">
              
              
          <title>SSIM</title>
              
              
          <SCRIPT language=javascript>
              
          function check() {
                  
          var s = "";
                  
          var n = document.getElementById("user.userEmail").value ? null : s+= "用戶名不能為空\(chéng)n";
                  
          var p = document.getElementById("user.userPassword").value ? null : s+="密碼不能為空\(chéng)n";    
                  
          if(n || p){
                      alert(s);
                      
          return false;
                  }
          else{
                      document.userLoginForm.submit();
                  }
              }
          </SCRIPT>

            
          </head>
            
            
          <body>
            
          <form name="userLoginForm" action="<%=path %>/user/login.action" method=post>
            
          <table>
            
          <tr>
            
          <td>用戶名:<input id="user.userEmail" type="text" name="user.userEmail" size="15"/></td></tr>
            
          <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;碼:<input id="user.userPassword" type="password" name="user.userPassword" size="16"/></td></tr>
            
          <tr><td><input type="submit" value="登錄" onclick="return check();"/></td></tr>
            
          </table>
             
             
          </form>
            
          </body>
          </html>
          welcome.jsp
          <html>
          <body>
          <h2>登錄成功</h2>
          </body>
          </html>

                  如果你輸入郵箱和密碼,點(diǎn)擊登錄看到“登錄成功”,那么恭喜你
                  今天到此為止,下一次   SSH筆記五  整合Tiles2

          posted on 2009-08-11 00:29 ju 閱讀(2776) 評(píng)論(1)  編輯  收藏 所屬分類: SSH系列

          評(píng)論:
          # re: SSH筆記四 整合struts2 2009-08-11 09:53 | 凡客誠(chéng)品
          主站蜘蛛池模板: 苏州市| 青冈县| 谷城县| 上饶县| 连山| 东阳市| 搜索| 阿拉善右旗| 彝良县| 卓资县| 上高县| 华容县| 龙南县| 夹江县| 惠来县| 黄石市| 溆浦县| 南宁市| 临泉县| 临城县| 平安县| 贵州省| 化州市| 新巴尔虎右旗| 蛟河市| 鲁甸县| 滨海县| 宜章县| 安达市| 全州县| 富川| 龙泉市| 万宁市| 泰宁县| 盐津县| 肃宁县| 大安市| 休宁县| 福清市| 饶河县| 武夷山市|