SpringMVC笔记(4) ModelView传值 EL+JSTL
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