struts2前台后台逻辑串联

后台逻辑:

在整个项目的配置文件web.xml中,配置filter拦截器

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

异或

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

动用这个配置可以使运行时不报一下提示,具体有待考究

***********************************************************************
*                               WARNING!!!                            *
*                                                                     *
* >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
*                                                                     *
*           This can be a source of unpredictable problems!           *
*                                                                     *
*              Please refer to the docs for more details!             *
*            http://struts.apache.org/2.x/docs/webxml.html            *
*                                                                     *
***********************************************************************

以上Filter对每个jsp页面进行过滤拦截,会自动找项目根目录下的struts.xml配置文件

<struts>
    <include file="com/user/struts/user-struts.xml"></include>
</struts>

通过include的地址,引到对应功能模块路径下的xml子文件中

<struts>
    <package name="user" namespace="/user" extends="struts-default">
        <action name="userQuery" class="com.user.action.UserAction" method="query">
            <result name="success" >/pages/user/userList.jsp</result>
            <result name="error" >/pages/user/error.jsp</result>
        </action>
    </package>
</struts>

package:功能性包,对相同对象(user)进行增删改查操作的一个包
namespace:包空间名
action:行动标签
class:对应类
method:对应方法名
下面我们进入对应类中看看

public class UserAction extends ActionSupport {

    // 封装javabean
    private User user;
    private List<User> userList;

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    public User getUser() {
        return user;
    }

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

    // 实例化接口服务
    UserService userService = new UserServiceImpl();

    // 查询
    public String query() {
        userList = userService.queryList();
        if (userList == null) {
            return "error";
        } else {
            return "success";
        }
    }
}

struts配置文件自动将action中对应类中的属性封装成JavaBean,使前台页面可以直接调用该属性

前台逻辑:

下面捋顺一下页面访问的顺序:
通过访问页面
这里写图片描述
主机地址:端口号/项目名/包空间名/action的请求名
这里写图片描述

通过请求名找到对应类中的方法如下:

public class UserAction extends ActionSupport {
    // 查询
    public String query() {
        userList = userService.queryList();
        if (userList == null) {
            return "error";
        } else {
            return "success";
        }
    }
}

调用该方法返回给struts.xml一个结果result,
通过与result中的name进行比对,跳转到对应的页面(强烈怀疑是转发)
(再括号:后来发现的确是转发,result中type 的默认值就是dispatcher,也可添加redirect等参数,可参阅:
1.属性一目了然:http://blog.knowsky.com/188302.htm
2.带生动例子:http://blog.youkuaiyun.com/totally123/article/details/42417879
这里写图片描述
由于struts已经封装好对应action的JavaBean,
因此在前台页面中即可直接用EL表达式调用JavaBean中的属性

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值