1. 程式人生 > >使用spring mvc前臺獲取後臺返回的List

使用spring mvc前臺獲取後臺返回的List

在web的開發中,我們經常會用到在歡迎頁面載入的同時,也會查詢後臺的資料將其顯示在頁面上,這裡有一個辦法我們可以嘗試一下。

假如我想在一進入歡迎頁面的時候就顯示後臺資料庫中事先存放好的資料,那麼我們可以這樣做:

將action寫在web.xml中:

    <welcome-file-list>  
        <welcome-file>/categories/queryCates.do</welcome-file>  
    </welcome-file-list>  

這裡不要直接寫歡迎頁面,而將其移至控制器的返回值中。

在控制器中新增action對應的方法:

package com.pro.controller;

import com.pro.pojo.Category;
import com.pro.service.ICategoryService;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;


@Controller
@RequestMapping("/categories")
@SessionAttributes("catesArray")
public class CategoryController {
    
    @Resource
    private ICategoryService cateService;

    @RequestMapping("/queryCates")
    public String queryCatesIndex(HttpServletRequest req,HttpServletResponse rep,ModelMap model){ 
	List<Category> catesArray  = this.cateService.getAllCategories();
        model.addAttribute("catesArray",catesArray);
        if(model.containsAttribute("catesArray")){
            return "index";
        }    
        return "error";
    } 
}

說明:註解@SessionAttributes("catesArray")是為了將catesArray這個list放入session中,以便在其他任何頁面中可以隨時訪問這個list,這個session的生命週期可以根據需要自己設定。

接下來就是在頁面中遍歷這個list了:

<c:forEach items="${sessionScope.catesArray}" var="cates">
    <li class="subMenu open"><a class="FirstMenu">${cates.cateName}</a>
            <ul>
            <li><a class="active" href="products.jsp"><i class="icon-chevron-right"></i></a></li>
            <li><a href="products.jsp"><i class="icon-chevron-right"></i>Computers, Tablets & laptop (30)</a></li>
            <li><a href="products.jsp"><i class="icon-chevron-right"></i>Mobile Phone (80)</a></li>
            <li><a href="products.jsp"><i class="icon-chevron-right"></i>Sound & Vision (15)</a></li>
            </ul>

    </li>
</c:forEach>

說明:使用${}獲取變數時,如果不指定作用域,就會預設在Page範圍中找,如果找不到,再依次從Request、Session、Application範圍中找,如果全部沒找到,就會返回null,頁面不顯示任何東西。

屬性範圍(jstl名稱)

EL中的名稱

Page

PageScope

Request

RequestScope

Session

SessionScope

Application

ApplicationScope