[SSH] Eclipse+Struts2的簡單應用


終於要開始研究框架了,沒有大神的指導,只能自己上網摸索着來,沒有唯一對的方案,只能找到最適合自己的就可以了。

首先整理一下,代碼是參考別人的代碼,按照別人的版本有問題,大概整理了一下,自己重新弄了一個,注意下標紅的部分,每個人碰到的問題可能不一樣,這次的環境(基本都是當前最新的,64位,如果有需要的可以留言):

Eclispe:eclipse-jee-mars-R-win32-x86_64 (J2EE)

Tomcat:apache-tomcat-8.0.24-windows-x64

Structs:struts-2.3.24-apps.zip (因為里面會有空的blank例子,包肯定是正確的)

完成的功能:映射顯示jsp頁面,validation驗證。

1.首先要確保自己的JDK、和Tomcat配置正確,這里就不一一敘述了。

2.Eclipse里面File-> New-> Dynamic Web Progect (基本都選擇默認的就可以了),本例子的名字為SSHProject (之后會繼續整合Spring和Hibernate)

3.拷貝相應的包

  3.1解壓打開struts-2.3.24-apps.zip  里面app下面的 struts2-blank.war (打開war的方法,可以再相同工作目錄下,建立一個rar,雙擊rar,然后如圖示點擊向上,就可以顯示war,雙擊解壓即可)

         

 3.2 把blank中 WEB-INF中lib下面的包 都拷貝到 新建工程的 WEB-INF的lib中(不要多拷貝,也不要少拷貝)

     

3.3 打開blank.app.WEB-INF 下面的web.xml 將其中的Filter部分拷貝到工程對應的web.xml中

  

4.建立工程代碼

4.1 struts.xml 

 (注意拼寫和大小寫,要在Java Resources下的 src下面 )

  寫出具體jsp的映射(先看代碼,讀完后面的可以再返回來理解)

<?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>

    <include file="struts-default.xml" />
    <package name="tiny" extends="struts-default">
        <action name="register" class="com.tiny.ssh.action.RegisterAction">
            <result name="input">/Register.jsp</result>
            <result name="success">/success.jsp</result>
            <result name="error">/fail.jsp</result>
        </action>
    </package>

</struts>

 

4.2 其他包的相應的代碼:

 RegisterAction.java:

package com.tiny.ssh.action;


import com.opensymphony.xwork2.ActionSupport;
import com.tiny.ssh.beans.UserForm;
import com.tiny.ssh.service.UserManager;
import com.tiny.ssh.serviceImp.UserManagerImpl;

public class RegisterAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private UserForm user;

    private UserManager userManager;

    public UserForm getUser() {
        return user;
    }

    public void setUser(UserForm user) {
        this.user = user;
    }

    public UserManager getUserManager() {
        return userManager;
    }

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

    public String execute() {
        try {
            this.setUserManager(new UserManagerImpl());
            userManager.regUser(user);
            return SUCCESS;

        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    }

}

 RegisterAction-validation.xml(上一個的驗證,固定名字 [Action-Name]-validation,注意上面的頭部代碼,會因為版本的問題出現錯誤,選擇其中好使的一個):

 以前param的name都為expression struts2 2.3.x這個版本不好使了 要改為regex 可以自行查閱文檔。

<?xml version="1.0" encoding="GBK"?>
<!-- 版本不一致 選擇下面兩個的一個 -->
<!-- 
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
 -->
 <!DOCTYPE validators PUBLIC
 "-//Apache Struts//XWork Validator 1.0.2//EN" 
 "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

<validators>
    <!-- 添加對用戶名的校驗 -->
    <field name="user.username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用戶名不能為空</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex"><![CDATA[(\w{6,16})]]></param>
            <message>用戶名輸入不合法,必須為長度在6~16中間的數字或字母</message>
        </field-validator>
    </field>
    
    <!-- 添加對密碼的校驗 -->
    <field name="user.password">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>密碼不能為空</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex"><![CDATA[(\w{6,16})]]></param>
            <message>密碼輸入不合法,必須為長度在6~16之間的數字或者字母</message>
        </field-validator>
    </field>
</validators>

 UserForm.java:

package com.tiny.ssh.beans;

public class UserForm {

    private String username;
    private String password;
    private int gender;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getGender() {
        return gender;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

}

 UserManager.java:

package com.tiny.ssh.service;

import com.tiny.ssh.beans.UserForm;

public interface UserManager {

    public void regUser(UserForm user);

}

 UserManagerImpl.java:

package com.tiny.ssh.serviceImp;

import com.tiny.ssh.beans.UserForm;
import com.tiny.ssh.service.UserManager;

public class UserManagerImpl implements UserManager {

    @Override
    public void regUser(UserForm user) {
        
    }

}

Register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>User Register Page</title>
</head>
<body>

    <s:form action="register">
        <s:textfield name="user.username" label="用戶名"></s:textfield>
        <s:password name="user.password" label="密碼"></s:password>
        <s:select list="#{'1':'男','0':'女'}" listKey="key" listValue="value"
            name="user.gender" label="性別" value="1"></s:select>
        <s:submit value="注冊"></s:submit>
    </s:form>

</body>
</html>

success.jsp 只是顯示了Success一句話。

最終的層次圖如下:

 

 

5.建立新的Tomcat服務器,網址輸入http://localhost:8080/SSHProject即可

 (別忘了改在web.xml的歡迎界面,本例子改為Register.jsp)

 結果圖:

 

 

 

6.總結

 Struts是當今Java比較流行的三大框架之一,三大框架是Struts,spring,hibernate。

 Struts框架包括Struts1和Struts2,由於兩個版本相差比較大,Struts1已經被淘汰,現在企業基本上全部都用Struts2,本例子使用的就是Struts2。

 該框架的作用,可以理解為將用戶和訪問的JSP解耦,交給Action來做,struts.xml中配置相應的映射關系,通過映射找到對應的jsp頁面。

 下面的圖利於理解:

 

 希望讀者好好體會,以便於應用。

 

參考鏈接:

http://blog.csdn.net/yeohcooller/article/details/9316923

http://bbs.csdn.net/topics/390755826

http://blog.163.com/sean_zwx/blog/static/169032755201091595558378/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM