今天看到网上的文章,说如何在项目中选择MVC框架,看了一下Spring 3.0 MVC 的文档,感觉用注解的方式还是比较方便。跟Struts2比起来各有优点(注:以前用过struts1.x,现在用的是Strust2.x)。如果要选择的话看实际项目架构情况来选择。不说了,动手做一个spring 3.0MVC 的demo,包含页面和controller之间的参数传递(list,map,object,Sting) 及页面的展示。
1)创建web工程
2)引入相关jar包(注:commons-fileupload.jar,commons-logging.jar不在spring官方下载包中,需另外添加)
3)配置web.xml
<servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
4)编写引用mvc的配置文件 example-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.longflang.controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
注:example-servlet.xml的命名: example为web.xml定义的名称。系统启动时自己扫描以web定义名称-servlet.xml的配置文件
5)编写controller DemoController .java
package com.longflang.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.longflang.pojo.User;
@Controller
public class DemoController {
@RequestMapping(value="getmv")
public ModelAndView getInfo(){
ModelAndView modelAndView = new ModelAndView();
//传String
modelAndView.addObject("title", "Return ModelAndView:");
//传Object
User u = new User("longflang","12");
modelAndView.addObject("user", u);
//传List
List<User> userlist = new ArrayList<User>();
userlist.add(new User("longflang1","123"));
userlist.add(new User("longflang2","345"));
userlist.add(new User("longflang3","45"));
modelAndView.addObject("list", userlist);
//传Map
Map<String, String> usermap = new HashMap<String, String>();
usermap.put("name", "longflang");
usermap.put("age", "234");
modelAndView.addObject("user", usermap);
modelAndView.setViewName("result");
return modelAndView;
}
@RequestMapping(value="string")
public String getInfo(Model model){
//传String
model.addAttribute("title", "return String:");
//传Object
User u = new User("longflang","12");
model.addAttribute("user", u);
//传List
List<User> userlist = new ArrayList<User>();
userlist.add(new User("longflang1","123"));
userlist.add(new User("longflang2","345"));
userlist.add(new User("longflang3","45"));
model.addAttribute("list", userlist);
//传Map
Map<String, String> usermap = new HashMap<String, String>();
usermap.put("name", "longflang");
usermap.put("age", "234");
model.addAttribute("map", usermap);
return "result";
}
@RequestMapping(value="strparam")
public String getInfo(@RequestParam("name") String name ,@RequestParam("age") String age,Model model){
//传String
model.addAttribute("title", "return String: @RequestParam");
//传Object
User u = new User(name,age);
model.addAttribute("user", u);
//传List
List<User> userlist = new ArrayList<User>();
userlist.add(new User(name,age));
userlist.add(new User(name,age));
userlist.add(new User(name,age));
model.addAttribute("list", userlist);
//传Map
Map<String, String> usermap = new HashMap<String, String>();
usermap.put("name", name);
usermap.put("age", age);
model.addAttribute("map", usermap);
return "result";
}
@RequestMapping(value="strparam/{name}")
public String getInfo2(@PathVariable("name") String name ,@RequestParam("age") String age,Model model){
//传String
model.addAttribute("title", "return String: @PathVariable");
//传Object
User u = new User(name,age);
model.addAttribute("user", u);
//传List
List<User> userlist = new ArrayList<User>();
userlist.add(new User(name,age));
userlist.add(new User(name,age));
userlist.add(new User(name,age));
model.addAttribute("list", userlist);
//传Map
Map<String, String> usermap = new HashMap<String, String>();
usermap.put("name", name);
usermap.put("age", age);
model.addAttribute("map", usermap);
return "result";
}
}
6)定义POJO User.java
package com.longflang.pojo;
public class User {
private String name;
private String age;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String name, String age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
7)编写调用页面及结果页面 index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<a href="http://localhost:8080/mvc/getmv">ModelAndView:http://localhost:8080/mvc/getmv</a> <br>
<a href="http://localhost:8080/mvc/string">String:http://localhost:8080/mvc/string</a> <br>
<a href="http://localhost:8080/mvc/strparam?name=longflang&age=234">String@RequestParam:http://localhost:8080/mvc/strparam?name=longflang&age=234</a> <br>
<a href="http://localhost:8080/mvc/strparam/longflang?age=234">String@PathVariable:http://localhost:8080/mvc/strparam/longflang?age=234</a> <br>
</body>
</html>
result.jsp(注:位置与配置文件定义相同\WEB-INF\jsp\result.jsp )
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<br>String:${title }<br>
Object:<br>
name:${user.name }
age:${user.age }<br>
<hr>
List:<br>
<c:forEach var="u" items="${list}">
name:${u.name }
age:${u.age }<br>
</c:forEach>
<hr>
Map:<br>
name:${map.name }
age:${map.age }<br>
<hr>
</body>
</html>