项目需要用到Spring3.0的MVC和annotation,以前也接触过Spring,不过仅限于自己学习Spring的AOP和IoC,第一次听到Spring的MVC确实有点手足无措。网上参考了几个小案例,整了一下午,终于明白了点。分享一下。
这个Demo中,index.jsp里面有4个链接,分别对应Controller类中的四个方法。第一个与第二个方法同样Mapping的是一个简单的路径,分别return一个ModelAndView和String。第三个方法Mapping一个带参数的链接,第四个方法Mapping一个带路径变量和参数的链接。在方法中做处理后返回要展示的页面和数据。
1)新建一个Dynamic Web Project——SpringMVCDemo
2)引入jar包。包括spring中dist目录下的所有jar包,以及jstl.jar,standard.jar包(JSP页面中的for each标签要用到)和commons-logging-1.1.1.jar包。
3)配置web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>springMVCDemo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springMVCDemo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
4)在web.xml所在路径下新建springMVCDemo-servlet.xml,名字中的springMVCDemo是web.xml中配置的servlet-name,所以这个xml文件的名字是固定的。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mvc:annotation-driven />
<!-- 注释资源扫描包路径 -->
<context:component-scan base-package="org.spring.wayne.controller" />
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" /><!-- 跳转页面的前缀路径
如 /web-inf/jsp/ -->
<property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp -->
</bean>
</beans>
5)新建一个POJO类User.java,内容如下:
package org.spring.wayne.model;
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
6)编写Controller类DemoController.java,内容如下:
package org.spring.wayne.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.spring.wayne.model.User;
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;
@Controller
public class DemoController {
@RequestMapping("/getmav")
public ModelAndView getInfo() {
ModelAndView mav = new ModelAndView();
// 传String
mav.addObject("title", "Return ModelAndView");
// 传Object
User user = new User("wayne", 24);
mav.addObject("user", user);
// 传List
List<User> list = new ArrayList<User>();
list.add(new User("wayne1", 12));
list.add(new User("wayne2", 24));
list.add(new User("wayne3", 34));
list.add(new User("wayne4", 45));
mav.addObject("list", list);
// 传Map
Map<String, String> map = new HashMap<String, String>();
map.put("name", "wayne");
map.put("age", "24");
mav.addObject("map", map);
mav.setViewName("result");
return mav;
}
@RequestMapping("/string")
public String getInfo(Model model) {
// 传String
model.addAttribute("title", "Return String");
// 传Object
User user = new User("wayne", 24);
model.addAttribute("user", user);
// 传List
List<User> list = new ArrayList<User>();
list.add(new User("wayne1", 12));
list.add(new User("wayne2", 24));
list.add(new User("wayne3", 34));
list.add(new User("wayne4", 45));
model.addAttribute("list", list);
// 传Map
Map<String, String> map = new HashMap<String, String>();
map.put("name", "wayne");
map.put("age", "24");
model.addAttribute("map", map);
return "result";
}
@RequestMapping("/strparam")
public String getInfo(@RequestParam("name") String name,
@RequestParam("age") String age, Model model) {
// 传String
model.addAttribute("title", "Return String @RequestParam");
// 传Object
User user = new User(name, Integer.valueOf(age));
model.addAttribute("user", user);
// 传List
List<User> list = new ArrayList<User>();
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
model.addAttribute("list", list);
// 传Map
Map<String, String> map = new HashMap<String, String>();
map.put("name", "wayne");
map.put("age", "24");
model.addAttribute("map", map);
return "result";
}
@RequestMapping("/strparam/{name}")
public String getInfor(@PathVariable("name") String name,
@RequestParam("age") String age, Model model) {
// 传String
model.addAttribute("title", "Return String @PathVariable");
// 传Object
User user = new User(name, Integer.valueOf(age));
model.addAttribute("user", user);
// 传List
List<User> list = new ArrayList<User>();
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
list.add(new User(name, Integer.valueOf(age)));
model.addAttribute("list", list);
// 传Map
Map<String, String> map = new HashMap<String, String>();
map.put("name", name);
map.put("age", age);
model.addAttribute("map", map);
return "result";
}
}
7)编写JSP页面,WebContent目录下的index.jsp内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<a href="http://localhost:9090/SpringMVCDemo/getmav">http://localhost:9090/SpringMVCDemo/getmav</a>
<br />
<a href="http://localhost:9090/SpringMVCDemo/string">http://localhost:9090/SpringMVCDemo/string</a>
<br />
<a
href="http://localhost:9090/SpringMVCDemo/strparam?name=wayne&age=24">http://localhost:9090/SpringMVCDemo/strparam?name=wayne&age=24</a>
<br />
<a
href="http://localhost:9090/SpringMVCDemo/strparam/name=wayne?age=24">http://localhost:9090/SpringMVCDemo/strparam/name=wayne?age=24</a>
</body>
</html>
WebContent/WEB-INF/jsp路径(该路径为springMVCDemo-servlet.xml文件中id为viewResolver的prefix属性所配置)下的result.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>Insert title here</title>
</head>
<body>
This is the result page .
<br /> Title:${title}
<br /> Object:
<br /> Name:${user.name}Age:${user.age}
<br /> List:
<br />
<c:forEach var="u" items="${list }">
Name:${u.name }
Age:${u.age }<br />
</c:forEach>
Map:
<br /> Name:${map.name }Age:${map.age}
<br />
</body>
</html>
Demo已经完成,运行如下图所示:
打开tomcat,在浏览器中输入http://localhost:9090/SpringMVCDemo/index.jsp后如图所示:
依次打开浏览器中的链接,运行结果如下图所示:
这就是一个完整的简单的Spring MVC Demo ,参考来自网络……#
分享到:
相关推荐
Spring MVC internationalization annotation example 这个是annotation 方式的国际化 访问http://localhost:8080/login.htm
这里提供了Spring3 MVC中较为常见的使用方法,主要是利用Spring3官方文档建议使用的Annotation进行开发的一般步骤,包含了常见的集中Annotation的使用方法。
博文链接:https://pesome.iteye.com/blog/236273
详解 Spring 3.0 基于 Annotation 的依赖注入实现。。详解 Spring 3.0 基于 Annotation 的依赖注入实现。。
Spring+mybatis annotation形式 进行增删查改,使用maven容器,配置完整,自己运行多次无问题
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
Table of Contents Introduction Chapter 1: The Spring Framework Chapter 2: Model 2 and the MVC Pattern Chapter 3: Introduction to Spring MVC Chapter 4: Annotation-Based Controllers Chapter 5: Data ...
Ajax With Spring 3. Eclipse 工程,包含Web所需要的 所有jar包。 1> ajax 请求。 2> spring 3注解使用 3> mvc:annotation
Spring annotation 样例
Spring4 MVC Hibernate4集成,使用Annotation,封装dao层和service层。 环境: spring 4.0.3.RELEASE hibernate 4.3.5.Final mysql 5.1.29
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean ...
Spring Annotation
spring mvc annotation interceptor
NULL 博文链接:https://wsjjasper.iteye.com/blog/1570448
主要介绍了Spring MVC Annotation验证的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一个简单的spring mvc登录案例,采用的是annotation方式。
NULL 博文链接:https://bijian1013.iteye.com/blog/2142528
Spring MVC 整合Hibernate的一个小小的用例,适合初学Spring MVC 的学者。