1. 程式人生 > >struts2學習(2)struts2核心知識

struts2學習(2)struts2核心知識

print back exec soft .cn dtd del display .org

一、Struts2 get/set 自動獲取/設置數據

根據上一章。中的源碼繼續。

HelloWorldAction.java中private String name,自動獲取/設置name:

package com.cy.action;

import com.opensymphony.xwork2.Action;

public class HelloWorldAction implements Action{
    
    private String name;
    
    public String getName() {
        return name;
    }

    
public void setName(String name) { this.name = name; } public String execute() throws Exception { System.out.println("執行了Action的默認方法"); return SUCCESS; } }

helloWorld.jsp:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
> <title>Insert title here</title> </head> <body> ${name }你好!! </body> </html>

1)使用get方式:

瀏覽器中訪問:http://localhost:8080/Struts2Chap01/hello?name=asdasd

結果:

技術分享

2)post方式:

編寫index.jsp頁面:

<body>
    <form action="hello" method="post">
        name: <input type
="text" name="name"/> <input type="submit" value="submit" /> </form> </body>

瀏覽器中訪問:http://localhost:8080/Struts2Chap01/index.jsp,輸入name:

技術分享

點擊submit:

技術分享

二、ActionSupport 類引入

HelloWorldAction2.java中繼承ActionSupport:

package com.cy.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction2 extends ActionSupport{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private String name;
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String execute() throws Exception {
        System.out.println("執行了HelloWorldAction2 Action的默認方法");
        return SUCCESS;
    }

}

struts.xml中修改為com.cy.action.HelloWorldAction2:

<?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來區分 -->
    <package name="helloWorld" extends="struts-default">
        <action name="hello" class="com.cy.action.HelloWorldAction2">
            <!-- 默認是轉發,轉發到helloWorld.jsp -->
            <result name="success">helloWorld.jsp</result>
        </action>
    </package>

</struts>

測試結果ok;

ActionSupport功能更強大,以後都用ActionSupport。 三、Action 設置數據 技術分享 需求:我們模擬用戶登錄,如果用戶名為cy,密碼為123456就登錄成功,否則失敗; 第一種:屬性驅動: A.基本數據類型屬性: com.cy.action.UserAction.java: 技術分享
package com.cy.action;

import com.cy.model.User;
import com.cy.service.UserService;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
    
    private static final long serialVersionUID = 1L;
    private UserService userService = new UserService();
    private String userName;
    private String password;
    
    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 String execute() throws Exception {
        System.out.println("執行了UserAction Action的默認方法");
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        if(userService.login(user)){
            return SUCCESS;
        }else{
            return ERROR;
        }
        
    }

}
View Code

com.cy.model.User:

技術分享
package com.cy.model;

public class User {
    private String userName;
    private String password;
    
    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;
    }
}
View Code

com.cy.service.UserService:

技術分享
package com.cy.service;

import com.cy.model.User;

public class UserService {
    
    public boolean login(User user){
        if("cy".equals(user.getUserName()) && "123456".equals(user.getPassword())){
            return true;
        }else{
            return false;
        }
    }
}
View Code

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>

    <!-- 可以創建很多的package,用name來區分 -->
    <package name="helloWorld" extends="struts-default">
        <action name="hello" class="com.cy.action.HelloWorldAction2">
            <!-- 默認是轉發,轉發到helloWorld.jsp -->
            <result name="success">helloWorld.jsp</result>
        </action>
        
        <action name="user" class="com.cy.action.UserAction">
            <result name="success">success.jsp</result>
            <result name="error">error.jsp</result>
        </action>
    </package>

</struts>

login.jsp登錄界面:

<body>
    <form action="user" method="post">
        用戶名: <input type="text" name="userName"/><br>
        密碼: <input type="password" name="password"/><br>
        <input type="submit" value="登錄" />
    </form>
</body>

success.jsp登錄成功的頁面:

<body>
    登錄成功!
</body>

error.jsp登錄失敗的界面:

技術分享
<body>
    登錄失敗!
</body>
View Code

測試:

瀏覽器訪問http://localhost:8080/Struts2Chap01/login.jsp,輸入cy,123456

技術分享

登錄成功:

技術分享

B:javaBean類型屬性驅動:

----------

struts2學習(2)struts2核心知識