Struts2——核心知识

2020-07-14 16:49:19 浏览数 (1)

1,Struts2中get/set自动获取/设置数据

比如先在Action类里面添加一个name属性并加上get/set方法;

代码语言:javascript复制
package com.java.action;

import com.opensymphony.xwork2.Action;

public class HelloWorld implements Action {

    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String execute() throws Exception {

        System.out.println("执行了action的默认方法");
        return SUCCESS;
    }
}

然后我们在页面上再加上获取属性的代码;

代码语言:javascript复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  ${name}&nbsp;Struts2
  </body>
</html>

我们来测试一下看看后台能否获取到属性:

运行项目之后:

2,ActionSupport类引入

我们可以继承自ActionSupport类,修改如下:

代码语言:javascript复制
package com.java.action;

import com.opensymphony.xwork2.ActionSupport;


public class HelloWorld extends ActionSupport {


    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String execute() throws Exception {

        System.out.println("执行了ActionSupport的默认方法");
        return SUCCESS;
    }
}

运行出来是同样的结果;

3,Action设置数据

属性驱动

先建立一个user实体类;

代码语言:javascript复制
package com.java.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;
    }
}

写一个简单的登录页面;

代码语言:javascript复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="user" method="post">
    用户名:<input type="text" name="userName"/>
    密码:<input type="text" name="passWord"/>
    <input type="submit" value="登录"/>
</form>
</body>
</html>

数据访问层service;

代码语言:javascript复制
package com.java.service;

import com.java.model.User;

public class UserService {

    public boolean login(User user){
        if("java".equals(user.getUserName()) && "123".equals(user.getPassWord())){
            return true;
        } else{
            return false;
        }
    }
}

处理类Action;

代码语言:javascript复制
package com.java.action;

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

public class UserAction extends ActionSupport {

    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;
    }

    @Override
    public String execute() throws Exception {
        System.out.println("默认执行了User方法");
        User user=new User();
        user.setUserName(userName);
        user.setPassWord(passWord);
        if(userService.login(user)){
            return SUCCESS;
        } else{
            return ERROR;
        }
    }
}

struts.xml配置;

代码语言:javascript复制
<action name="user" class="com.java.action.UserAction">
         <result name="success">success.jsp</result>
         <result name="error">error.jsp</result>
      </action>

运行之后就可以成功!

JavaBean属性

UserAction类;

代码语言:javascript复制
package com.java.action;

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

public class UserAction2 extends ActionSupport {

    private UserService userService=new UserService();

    private User user;

    public User getUser() {
        return user;
    }

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

    @Override
    public String execute() throws Exception {
        System.out.println("默认执行了User方法");
        if(userService.login(user)){
            return SUCCESS;
        } else{
            return ERROR;
        }
    }
}

登录界面修改一下;

代码语言:javascript复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="user2" method="post">
    用户名:<input type="text" name="user.userName"/>
    密码:<input type="text" name="user.passWord"/>
    <input type="submit" value="登录"/>
</form>
</body>
</html>

就可以了!

0 人点赞