棒球比分大小怎么算 www.355548.live 速動畫教程第三十集

搭建SSH2的集成開發環境


下載地址:www.oksonic.cn    www.oksonic.com.cn
 

一.開發環境:

1.  Windows2003 sp1

2.  Eclipse3.2.2

3.  MyEclipse5.1.1

4.  Struts2.0.6

5.  Spring2.0.4

 

二.教學內容

1.       Struts2.0的應用之Login

2.       表單驗證

3.       使用freemarker模板

4.       集成Spring2.0

5.       Struts2.0的單元測試

 

三.準備工作

1.       struts-2.0.6-all.zip

2.       spring 2.0.2

 

四.開發步驟

1.       Struts2.0Login應用

a)         建立一個Struts2.0應用(ssh2

b)        struts-2.0.6-all.ziplib目錄以下文件拷貝到項目的lib目錄中,刷新工程。

                                       i.              antlr-2.7.2.jar

                                     ii.              commons-beanutils-1.6.jar

                                    iii.              commons-chain-1.1.jar

                                   iv.              commons-logging-1.0.4.jar

                                     v.              commons-validator-1.3.0.jar

                                   vi.              freemarker-2.3.8.jar

                                  vii.              ognl-2.6.11.jar

                                viii.              oro-2.0.8.jar

                                   ix.              struts2-core-2.0.6.jar

                                     x.              xwork-2.0.1.jar

c)        編輯web.xml文件,加入以下紅色字體部份

      

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" xmlns="//java.sun.com/xml/ns/j2ee"

    xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="//java.sun.com/xml/ns/j2ee

    //java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <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>/*</url-pattern>

    </filter-mapping>

    <welcome-file-list>

        <welcome-file>login.jsp</welcome-file>

    </welcome-file-list>

   

</web-app>

d)        頁面的設計

                                       i.              進入登錄界面login.jsp填寫的用戶名和密碼

                                     ii.              用戶名和密碼驗證成功后跳轉到首頁index.jsp

                                    iii.              用戶名和密碼驗證失敗后跳轉到錯誤頁error.jsp

                      

e)         類圖

             

f)         相關代碼

       頁面部份

                     login.jsp

<%@ page language="java" pageEncoding="GBK"%>

<html>

    <head>

        <title>登錄</title>

    </head>

    <body>

            登錄

        <FORM action="login.action" method="post">

            <DIV align="center">

                <TABLE width="300px" border="1" cellpadding="0" cellspacing="0">

                    <TR>

                        <TD>

                            姓名:

                        </TD>

                        <TD>

                            <INPUT type="text" size="10" name="user.username">

                        </TD>

                    </TR>

                    <TR>

                        <TD>

                            密碼:

                        </TD>

                        <TD>

                            <INPUT type="text" size="10" name="user.password">

                        </TD>

                    </TR>

                    <TR>

                        <TD colspan="2" align="center">

                            <INPUT type="submit" value="提交" name="submit">

                        </TD>

                    </TR>

                </TABLE>

            </DIV>

        </FORM>

    </body>

</html>

                

              index.jsp

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri = "/struts-tags"  prefix = "s" %>

<html>

    <head>

        <title>首頁</title>

    </head>

    <body>

        <s:property value="user.username" /> 歡迎您到來!

    </body>

</html>

              error.jsp

<%@ page language="java" pageEncoding="GBK"%>

<html>

    <head>

        <title>錯誤</title>

    </head>

    <body>

        <DIV align="center">

            <h3>來到這里就是出錯啦</h3>

        </DIV>

    </body>

</html>

              Java代碼部份

User.java

package cn.oksonic.model.bo;

public class User {

   // 用戶名稱

   private String username;

   // 密碼

   private String password;

   public String getPassword() {

       return password;

   }

   public void setPassword(String password) {

       this.password = password;

   }

   public String getUsername() {

       return username;

   }

   public void setUsername(String username) {

       this.username = username;

   }

}

               

LoginAction.java

package cn.oksonic.web;

import cn.oksonic.model.bo.User;

import com.opensymphony.xwork2.Action;

public class LoginAction extends ActionSupport {

   private User user = new User();

   @SuppressWarnings("static-access")

   public String execute() throws Exception {

       // 可以在這里調用Service層來進行驗證,這里只驗證用戶名

       if (user.getUsername().equals("oksonic"))

           return this.SUCCESS;

       else

           return this.ERROR;

   }

   public User getUser() {

       return user;

   }

}

 

 

              配置文件部份

                     新建struts.xmlsrc目錄)

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "//struts.apache.org/dtds/struts-2.0.dtd" >

<struts>

    <package name="user" namespace="/" extends="struts-default">

        <!-- 配置一個action -->

        <action name="login" class="cn.oksonic.web.LoginAction">

            <!--  這里的意思是登錄成功后跳轉到 /index.jsp 頁面 -->

            <result name="success" type="dispatcher">

                <param name="location">/index.jsp</param>

            </result>

            <!--  登錄失敗后跳轉到 /error.jsp 頁面 -->

            <result name="error" type="dispatcher">

                <param name="location">/error.jsp</param>

            </result>

        </action>

    </package>

</struts>

2.       表單驗證

a)         配置驗證器

                            src目錄新建validators.xml文件,文件內容如下:

<validators>

    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>

    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>

    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>

    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>

    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>

    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>

    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>

    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>

    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>

    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>

</validators>

這些驗證器已經定義了一些常用的驗證,如:必填驗證、數字驗證、日期驗證、郵件驗證等。

要啟動表單驗證,需要增加一個攔截器,對 struts.xml 文件進行修改,增加 <interceptor-ref name="validationWorkflowStack" />

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "//struts.apache.org/dtds/struts-2.0.dtd" >

<struts>

    <package name="user" namespace="/" extends="struts-default">

        <!-- 配置一個action -->

        <action name="login" class="cn.oksonic.web.LoginAction">

            <!--  這里的意思是登錄成功后跳轉到 /index.jsp 頁面 -->

            <result name="success" type="dispatcher">

                <param name="location">/index.jsp</param>

            </result>

            <!--  登錄失敗后跳轉到 /error.jsp 頁面 -->

            <result name="error" type="dispatcher">

                <param name="location">/error.jsp</param>

            </result>

            <interceptor-ref name="validationWorkflowStack" />

        </action>

    </package>

</struts>

建立驗證配置文件

      LoginAction 進行驗證規則的配置,需要新建一個配置文件,文件名以 Action 的名稱 + -validation.xml來命名,并保存到 LoginAction.java 文件所在的目錄中

如:

                  LoginAction-validation.xml

文件內容如下:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "//www.opensymphony.com/xwork/xwork-validator-1.0.dtd">

<validators>

    <field name="user.username">

        <field-validator type="requiredstring">

            <message>用戶名必須填寫</message>

        </field-validator>

    </field>

    <field name="user.password">

        <field-validator type="requiredstring">

            <message>用戶密碼必須填寫</message>

        </field-validator>

    </field>

</validators>

修改 login.jsp,代碼如下:

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri = "/struts-tags"  prefix = "s" %>

<html>

    <head>

        <title>登錄</title>

    </head>

    <body>

           

        <s:form name="loginForm" action="login.action">

            <DIV align="center">

                <TABLE width="300px" border="1" cellpadding="0" cellspacing="0">

                    <TR>

                        <TD>

                            姓名:

                        </TD>

                        <TD>

                            <s:textfield  name="user.username" required="true"/>

                        </TD>

                    </TR>

                    <TR>

                        <TD>

                            密碼:

                        </TD>

                        <TD>

                            <s:password name="user.password" required="user.password"/>

                        </TD>

                    </TR>

                    <TR>

                        <TD colspan="2" align="center">

                            <s:submit value="登錄" />

                        </TD>

                    </TR>

                </TABLE>

            </DIV>

        </s:form>

    </body>

</html>

</html>

   這里的紅字部份為struts的標簽

 

修改配置文件,加入input屬性,設置了此屬性表單提交后如果出錯后將返回到指定的頁面

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "//struts.apache.org/dtds/struts-2.0.dtd" >

<struts>

    <package name="user" namespace="/" extends="struts-default">

        <!-- 配置一個action -->

        <action name="login" class="cn.oksonic.web.LoginAction">

            <!--  這里的意思是登錄成功后跳轉到 /index.jsp 頁面 -->

            <result name="success" type="dispatcher">

                <param name="location">/index.jsp</param>

            </result>

            <!--  登錄失敗后跳轉到 /error.jsp 頁面 -->

            <result name="error" type="dispatcher">

                <param name="location">/error.jsp</param>

            </result>

            <!--  如果驗證失敗,則返回登錄頁 -->

            <result name="input" type="dispatcher">

                <param name="location">/login.jsp</param>

            </result>

            <interceptor-ref name="validationWorkflowStack" />

        </action>

    </package>

</struts>

 

3.       使用freemarker模板

      使用freemarker模板語言來顯示頁面內容在Struts2中實現起來很簡單,現在歡迎頁面改為使用freemarker來顯示。

      新建welcome.ftl文件,后綴名為ftl的文件即為freemarker模板文件夾,文件內容如下:

${user.username}

歡迎您的到來!這是FreeMarke頁面

   有一點需要注意,welcome.ftl文件默認編碼為GBK,需要將其轉為UTF-8,否則中文不能正常顯示。

   修改Action執行成功后的轉向,轉到welcome.ftl

   原:

<result name="success" type="dispatcher">

                        <param name="location">/index.jsp</param>

            </result>

   改:

<result name="success" type="freemarker">

                        <param name="location">/welcome.ftl</param>

            </result>

                

   紅字部份為類型,這里需要指定為freemarker

 

4.       集成Spring2.0

1)       加入spring2包內dist目錄下的spring.jar文件,加入struts2包內lib目錄下的struts2-spring-plugin-2.0.6.jar

2)       修改 web.xml,為 Web 應用增加相應的 Spring ContextLoaderListener

<listener>  

     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

    </listener>

3)       src 目錄下新建 struts.properties 文件,內容如下:

                struts.objectFactory = spring

4)       新增 Service 層的對像 IUserService、UserService

            IUserService

   

package cn.oksonic.service;

 

import cn.oksonic.model.bo.User;

 

public interface IUserService {

 

    /**

     * 驗證是否為合法用戶

     * @param user

     * @return

     */

    public boolean isValidUser(User user);

 

}

UserService

package cn.oksonic.service;

 

import cn.oksonic.model.bo.User;

 

public class UserService implements IUserService {

 

    public boolean isValidUser(User user) {

       if (user.getUsername().equals("oksonic") && user.getPassword().equals("oksonic"))

           return true;

       else

           return false;

    }

 

}

 

 

5)       修改 LoginAction.java代碼

 

package cn.oksonic.web;

 

import com.opensymphony.xwork2.ActionSupport;

 

import cn.oksonic.model.bo.User;

import cn.oksonic.service.IUserService;

 

@SuppressWarnings("serial")

public class LoginAction extends ActionSupport {

 

    private User user = new User();

    private IUserService userService;

   

    @SuppressWarnings("static-access")

    public String execute() throws Exception {

       // 可以在這里調用Service層來進行驗證,這里只驗證用戶名

       if (userService.isValidUser(user))

           return this.SUCCESS;

       else

           return this.ERROR;

    }

   

    public User getUser() {

       return user;

    }

 

    public void setUserService(IUserService userService) {

       this.userService = userService;

    }

 

}

6)       修改 struts.xml

 

     原:

    <action name="login" class="cn.oksonic.web.LoginAction">

    改:

    <action name="login" class="loginAction">

    這里紅字部份為引用spring中的bean

7)       加入spring框架,并配置loginAction Bean

  applicationContext.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="//www.springframework.org/schema/beans"

    xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 

    <bean id="userService" class="cn.oksonic.service.UserService" />

    <bean id="loginAction" class="cn.oksonic.web.LoginAction">

       <property name="userService">

           <ref bean="userService" />

       </property>

    </bean>

 

</beans>

紅字的login就是struts.xml文件中所引用的Bean

             

5.       Struts2.0的單元測試

                     使用spring-mork進行單元測試

a)         加入spring-mork.jar文件

b)        編寫BaseTest.java文件,以后所有的單元測試用例都將繼承于它,它的作用是讀取spring的配置文件。

                    

package cn.oksonic;

 

import org.springframework.test.AbstractSingleSpringContextTests;

 

public class BaseTest extends AbstractSingleSpringContextTests {

   

    protected String[] getConfigLocations() {

        return new String[]{"file:D:/oksonic/workspace/ssh2/WebRoot/WEB-INF/applicationContext.xml"};

    }

   

    public static final void testTmp() {

        assertTrue( true );

    }

    protected void logDebug( Object arg0 ) {

        logger.error(arg0);

    }

    protected void logError( Object arg0 ) {

        logger.error(arg0);

    }

    protected void logWarn( Object arg0 ) {

        logger.warn(arg0);

    }

 

}

c)        創建測試用例LoginActionTest.java

                    

package cn.oksonic.web;

 

import org.junit.Test;

import cn.oksonic.BaseTest;

import cn.oksonic.model.bo.User;

 

public class LoginActionTest extends BaseTest {

 

    private LoginAction action;

   

    @Override

    protected void onSetUp() throws Exception {

        super.onSetUp();

        action = (LoginAction) this.applicationContext.getBean("loginAction");

    }

   

    @Override

    protected void onTearDown() throws Exception {

        super.onTearDown();

        action = null;

    }

   

    @Test

    public void testExecute() throws Exception {

        User user = new User();

        user.setPassword("oksonic");

        user.setUsername("oksonic");

        action.setUser(user);

        assertEquals(action.execute(), action.SUCCESS);

    }

 

}

 

聯系方法:

  //www.oksonic.cn

  Email: oksonic@tom.com

  QQ: 71279650

 

 

Feedback

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-04-29 08:56 by living
www.oksonic.cn 網站不無法打開,請檢查

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境[未登錄]  回復  更多評論   

2007-04-29 11:45 by oksonic
已經檢查,可以打開!

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-04-29 16:11 by 應用之美
老大你真是太好了,急人所急啊!!

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-04-30 13:37 by asdfasdf
太好了,一直在等你這篇文章阿,寫得很詳細,清晰,謝謝阿,繼續,看過的人大家支持阿

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-04-30 14:42 by BeanSoft
謝了, 先收藏了.

不過, 說實在的, 小小一個登錄就要寫這么多配置文件... 個人覺得 Java 框架最好不要再向這個方向發展了.

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-06-27 12:41 by 彭偃松
不能不用真名回帖的帖子,我才發現這個博客,真是太好了??!
非常感謝斑竹?。。?!

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-06-27 12:42 by 彭偃松
我已經把你所有的33集都下載了??!
呵呵

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-07-01 20:50 by root
絕對好東西!
收藏

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-07-12 11:15 by wall
寫的不錯,非常感謝!

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-09-20 10:22 by thris
發現一個問題,請教oksonic:按照你的步驟做下去,當加入spring框架后,表單重復提交錯誤的用戶名和密碼時,返回的錯誤信息會重復累加。而未加入spring之前,沒有這樣的想象,求教是何緣故,如果解決?

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-10-26 14:37 by nigor
回復,錯誤信息會重復累加,去掉spring中的 <bean id="loginAction" class="cn.oksonic.web.LoginAction">

<property name="userService">

<ref bean="userService" />

</property>

</bean>

struts.xml中保持<action name="login" class="cn.oksonic.web.LoginAction">不變

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境  回復  更多評論   

2007-10-26 15:03 by nigor
<bean id="loginAction" class="com.test.action.LoginAction" scope="prototyte">
<property name="userService">
<ref bean="userService" />
</property>
</bean>

# re: 速動畫教程第三十集 搭建SSH2的集成開發環境[未登錄]  回復  更多評論   

2008-08-15 15:15 by Ray
我覺得說啥都沒用 只有2字 太感謝你了

只有注冊用戶登錄后才能發表評論。


網站導航:
 

posts - 35, comments - 1104, trackbacks - 0, articles - 0

Copyright © oksonic

{ganrao}