struts2查询的数据的存放

当我们查询数据的时候,把它存放到一个位置。以供页面显示。

1:使用***Map取代内置对象存放

public String query(){
        ActionContext.getContext().put("categoryList", categoryService.query());
        ActionContext.getContext().getSession().put("categoryList", categoryService.query());
        ActionContext.getContext().getApplication().put("categoryList", categoryService.query());

        return "index";
    }

对应的页面的显示

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
   <a href="${pageContext.request.contextPath }/category_update.action">访问update</a>
      <a href="category_query.action">查询所有类别</a><br/>
      <c:forEach items="${requestScope.categoryList}" var="category">
          ${category.id }|${category.type }|${category.hot}<br/>
      </c:forEach><br/>
    <c:forEach items="${sessionScope.categoryList}" var="gory">
          ${gory.id }|${gory.type }|${gory.hot}<br/>
      </c:forEach><br/>
      <c:forEach items="${applicationScope.categoryList}" var="category">
          ${category.id }|${category.type }|${category.hot}<br/>
      </c:forEach><br/>
  </body>
</html>

方案2:

利用接口implements RequestAware,ApplicationAware,SessionAware

package lw.shop.action;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class BaseAction extends ActionSupport implements RequestAware,ApplicationAware,SessionAware{
    protected Map<String,Object> request;
    protected Map<String,Object> session;
    protected Map<String,Object> application;
    @Override
    public void setSession(Map<String, Object> session) {
        this.session=session;
    }

    @Override
    public void setApplication(Map<String, Object> application) {
        this.application=application;
    }

    @Override
    public void setRequest(Map<String, Object> request) {
        this.request=request;
    }
}

然后Action继承BaseAction就可以了。

posted @ 2016-09-14 13:09  陆伟  阅读(1196)  评论(0编辑  收藏  举报