您的位置:首页 > 编程语言 > Java开发

SpringMVC学习笔记(4) ModelView传值 EL+JSTL

2014-08-12 15:34 531 查看
PS:改变文章标题只为更加详细说明功能、排版和统筹多篇文章,以方便日后复习。

一、 ModelView传值

spring3 mvc系列二:方法返回值的学习(注解版) 原文 http://blog.csdn.net/hankaibo/article/details/7239442

新建后台代码用以测试返回类型,在这里我新建的如下:

/**   
 * 项目名称:Spring3mvc demo  
 * Copyright ? 2010-2012 spartacus.org.cn All Rights Reserved  
 */  
package cn.org.spartacus.spring; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView;

/**  
 * Description: TODO  
 * @author hankaibo  
 * @date 2012-11-4  
 * @version v1.0  
 */ 
 @Controller     
 //添加注解,这样配置文件就可以找到它了。 
 public class ReturnController {     
 }
1,测试ModelAndView类型的返回。在代码中添加如下方法:

/**  
 * 项目名称:Spring3mvc demo
 * Copyright ? 2010-2012 spartacus.org.cn All Rights Reserved
 */  
package cn.org.spartacus.spring;  

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
 * Description: TODO
 * @author hankaibo
 * @date 2012-11-4
 * @version v1.0
 */
@Controller     //添加注解,这样配置文件就可以找到它了。
@RequestMapping("return")
public class ReturnController {
    /**
     * <p>Description: 测试一,返回ModelAndVie类型</p>
     * @param 
     * @return ModelAndView
     */
    @RequestMapping(value="test1",method=RequestMethod.GET)
    public ModelAndView test1(HttpServletRequest request,HttpServletResponse response){
        ModelAndView mav=new ModelAndView();
        mav.setViewName("mav");     //设置返回的文件名
        mav.addObject("mav", "我的返回类型是ModelAndView.");
        return mav;
        
    }

}
新建用于接受结果的前台页面mav.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>mav</title>
</head>
<body>
    ${mav }
</body>
</html>


在success.jsp中添加触发条件

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello world</title>
</head>
<body>
    Hello world!
    <c:redirect url="/app/return/test1" />
</body>
</html>


地址栏输入测试,完成。

最后完整版如下,Java代码:

/**  
 * 项目名称:Spring3mvc demo
 * Copyright © 2010-2012 spartacus.org.cn All Rights Reserved
 */
package cn.org.spartacus.spring;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;

/**
 * Description: TODO
 * 
 * @author hankaibo
 * @date 2012-11-4
 * @version v1.0
 */
@Controller
// 添加注解,这样配置文件就可以找到它了。
@RequestMapping("return")
public class ReturnController {
    /**
     * <p>
     * Description: 测试一,返回ModelAndVie类型
     * </p>
     * 
     * @param
     * @return ModelAndView
     */
    @RequestMapping(value = "test1", method = RequestMethod.GET)
    public ModelAndView test1(HttpServletRequest request, HttpServletResponse response) {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("return/mav"); // 设置返回的文件名
        mav.addObject("mav", "我的返回类型是ModelAndView.");
        return mav;

    }

    /**
     * <p>
     * Description: 跳转到界面为 类路径@RequestMapping的值+方法@RequestMapping的值组成的页面
     * </p>
     * 
     * @param
     * @return Model
     * @throws
     */
    @RequestMapping("test2")
    public Model test2(Model model) {
        model.addAttribute("model", "我的返回类型是Model");
        return model;

    }

    /**
     * <p>
     * Description: 跳转到界面为 类路径@RequestMapping的值+方法@RequestMapping的值组成的页面
     * </p>
     * 
     * @param
     * @return ModelMap
     * @throws
     */
    @RequestMapping("test3")
    public ModelMap test3(ModelMap modelMap) {
        modelMap.addAttribute("modelMap", "我的返回类型是ModelMap");
        return modelMap;
    }

    /**
     * <p>
     * Description: 跳转到界面为 类路径@RequestMapping的值+方法@RequestMapping的值组成的页面
     * </p>
     * 
     * @param
     * @return Map
     * @throws
     */
    @RequestMapping("test4")
    public Map test4(Map map) {
        map.put("map", "我的返回类型是Map");
        return map;
    }
    
    /**
     * <p>Description: TODO 返回的页面可以为pdf,excel等。</p>
     * @param 
     * @return View
     * @throws
     */
    @RequestMapping("test5")
    public View test5(){
        return null;
    }
    
    /**
     * <p>Description: 跳转到界面为 类路径@RequestMapping的值+方法@RequestMapping的值组成的页面</p>
     * @param 
     * @return void
     * @throws
     */
    @RequestMapping("test6")
    public void test6(Map<String,Object> map){
        map.put("void","我的返回类型是void");
    }
    /**
     * <p>Description: TODO</p>
     * @param 
     * @return String
     * @throws
     */
    @RequestMapping("test7")
    public String test7(Map<String,Object> map){
        map.put("string", "我的返回类型是String");
        return "return/string";
    }
}


jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello world</title>
</head>
<body>
    Hello world!
    <c:redirect url="/app/return/test1" />
    <%-- 
    <c:redirect url="/app/return/test2" />
    <c:redirect url="/app/return/test3" />
    <c:redirect url="/app/return/test4" />
    <c:redirect url="/app/return/test5" />
    <c:redirect url="/app/return/test6" />
    <c:redirect url="/app/return/test7" />
     --%>
</body>
</html>




二、EL与JSTL

EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西

JSTL常实现网页逻辑判断和迭代显示的,需要引入<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

在JSP页面添加EL和JSTL支持 原文 http://blog.sina.com.cn/s/blog_9aefc8af01017wim.html

1、JSP页面添加EL支持

将 工程中WEB-INF/web.xml头修改成

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-web-app_2_4.xsd" version="2.4">


如果只是针对某一页面则只在 jsp文件中添加 <%@ page isELIgnored="false" %>

(PS:SpringMVC默认支持EL,无需修改、若EL与JSTL冲突,则将false改成true,去除EL)

2、JSP页面添加JSTL支持

(1)添加包:

http://jakarta.apache.org/taglibs/中下载 jstl.jar 包和 standard.jar 包。

在http://xml.apache.org/xalan-j/中下载 xalan.jar 包。 (PS:此步骤不需要)

(2)在页面添加 taglib 指令标签:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

JSTL 核心标签库 使用(好)
http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: