- 浏览: 88000 次
- 性别:
- 来自: 杭州
最新评论
-
lecheng1986:
代码求分享下
java 应用的并发与流量控制 -
Sean_feng.wei:
accplxmaccplxm 写道源码从哪里下载呀?
新书-大型分布式网站架构设计与实践 -
quainter:
西欧字符改为中欧字符就好了
eclipse中文注释文字较小解决办法 -
wangguanghua:
不错。。。
浅析http平台的安全稳定性架构 -
java_workblog:
期待,又可以学好东西了.
复活贴
项目地址:http://www.springsource.org/
文档地址: http://www.springsource.org/documentation
下载: http://www.springsource.org/download
spring mvc 简介:
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。spring mvc 实现的功能类似struts 提供的mvc 解决方案,但是比spring 更加轻量级且更加灵活。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Spring
的 Web
MVC
框架是围绕 DispatcherServlet
设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的
Controller
接口,只有一个方法 ModelAndView handleRequest(request, response)
。
由于不在本文讨论范畴,为了方便起见,笔者仅对dao层和service层做了简单的实现,如需连接数据源,请读者自行修改。
所需jar包:
web.xml 配置:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>Spring character encoding filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Spring character encoding filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
springmvc-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"> <!-- 自动搜索 所有配置的autowired或者resource都是在该目录下面--> <context:component-scan base-package="com"></context:component-scan> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- @Autowired --> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/page/" /> <property name="suffix" value=".jsp" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="i18n/messages" /> <!-- 配置rest,根据不同请求,做不同的响应 如 /blog/1.json /blog/1.xml--> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 --> <property name="defaultContentType" value="application/xml" /> <!-- 扩展名至mimeType的映射,即 /user.json => application/json --> <property name="mediaTypes"> <map> <entry key="html" value="text/html" /> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> </map> </property> <property name="defaultViews"> <list> <!-- 输出为JSON数据--> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> <property name="prefixJson" value="false" /> </bean> <!-- 输出为xml数据--> <bean id="marshallingView" class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg> <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <array> <value>com.mvc.domain.User</value> <value>com.mvc.domain.UserList</value> </array> </property> </bean> </constructor-arg> </bean> </list> </property> </bean> <!-- 使用resource标签 --> <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" /> </beans>
contoller 代码:
package com.mvc.controller; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.mvc.domain.User; import com.mvc.domain.UserList; import com.mvc.service.UserService; /** * @Project: spring_mvc_test * * * @Annotation: 用户controller * * @Date:2011-9-5 * */ @Controller @RequestMapping("/user") public class UserController{ //@Resource(type=com.mvc.service.UserServiceImpl.class) @Autowired private UserService userServiceImpl; @InitBinder public void initBinder(WebDataBinder binder) { //设置日期转换 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor( dateFormat, false)); } @RequestMapping("hello") public ModelAndView hello(){ ModelAndView mav = new ModelAndView(); mav.setViewName("hello"); mav.addObject("message", "hello every body !"); return mav; } @RequestMapping("register") public ModelAndView register(){ ModelAndView mav = new ModelAndView(); mav.setViewName("register");//后台的jsp页面名称 return mav; } /** * * 传递表单内容 * * Last Modification Time: 2011-9-5 * * @param request * @param response * @param user 传递过来的用户 * @return */ @RequestMapping(value="/show", method = RequestMethod.POST) public ModelAndView showUser(HttpServletRequest request,HttpServletResponse response,User user){ System.out.println("host: " + request.getRemoteHost()); System.out.println("userinfo: " + user); ModelAndView mav = new ModelAndView(); mav.setViewName("display");//后台的jsp页面名称 mav.addObject("birthday",user.getBirthday()); mav.addObject("id",user.getId()); mav.addObject("money",user.getMoney()); mav.addObject("name",user.getName()); mav.addObject("user",user); userServiceImpl.addUser(user); return mav; } @RequestMapping("/find/{id}") public ModelAndView getUserById(@PathVariable int id,HttpServletRequest request,HttpServletResponse response){ ModelAndView mav = new ModelAndView(); mav.setViewName("display");//后台的jsp页面名称 System.out.println("id: " + id); User user = new User(); user.setName("aaaaa"); mav.addObject("user",user); return mav; } /** * 跳转到doadd的jsp页面 * * * Last Modification Time: 2011-9-5 * * @return */ @RequestMapping("/doaddview") public ModelAndView doaddview(){ ModelAndView mav = new ModelAndView(); mav.setViewName("add");//后台的jsp页面名称 return mav; } @RequestMapping(value="add") public String doadd(HttpServletRequest request,HttpServletResponse response){ System.out.println("Hello aaaaaaa "); request.setAttribute("message", "Hello aaaaa ! ,@RequestMapping(value='/add')"); return "hello"; } /** * 通过这种方法也可以获得user * * Last Modification Time: 2011-9-5 * * @param user */ @RequestMapping(value="add") public void addUser(@ModelAttribute("user") User user){ System.out.println("controller 级联"); System.out.println(user.getName()); } @RequestMapping("/showuser") public ModelAndView getById(){ User user = new User(); user.setBirthday(new Date()); user.setId(111); user.setMoney(112.0f); user.setName("aaaaaaaaa"); return new ModelAndView("display", "user", user); } @RequestMapping("/showsth") public ModelAndView getByIdAndName(){ List list = new ArrayList(); User user = new User(); user.setBirthday(new Date()); user.setId(111); user.setMoney(112.0f); user.setName("aaaaaaa"); list.add(user); list.add(user); list.add(user); list.add(user); list.add(user); list.add(user); UserList userList = new UserList(); userList.setList(list); userList.setName("UserList"); return new ModelAndView("display", "userlist", userList); } }
user dao 代码:
package com.mvc.dao; import com.mvc.domain.User; /** * @Project: spring_mvc_test * * @Annotation: 用户dao * * @Date:2011-9-5 * */ public interface UserDAO { public void addUser(User user); public User findUser(int id); }
user dao impl 代码:
package com.mvc.dao; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; import com.mvc.domain.User; /** * @Project: spring_mvc_test * * @Annotation: user dao 的实现类, * Data Access Object or DAO * 使用@Repository来标识 * * @Date:2011-9-5 * */ @Repository @Scope("prototype") public class UserDAOImpl implements UserDAO{ @Override public void addUser(User user) { } @Override public User findUser(int id) { return null; } }
user 类代码:
package com.mvc.domain; import java.util.Date; import javax.xml.bind.annotation.XmlRootElement; import com.thoughtworks.xstream.annotations.XStreamAlias; /** * @Project: spring_mvc_test * * @Annotation: 用户 * * @Date:2011-9-5 * */ @XmlRootElement(name="user") public class User { private int id; private String name; private Date birthday; private float money; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; } public User() {} public User(String name) { this.name = name; } public User(float money) { this.money = money; } public void showName() { System.out.println(this.name); } @Override public String toString() { return "id=" + this.id + " name=" + this.name + " birthday=" + this.birthday + " money=" + this.money; } }
userlist 代码:
package com.mvc.domain; import java.util.List; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; /** * @Project: spring_mvc_test * * @Annotation: * * @Date:2011-9-7 * */ @XmlRootElement public class UserList { private String name; private List list; @XmlElements({ @XmlElement(name = "user", type = User.class) }) public List getList() { return list; } public void setList(List list) { this.list = list; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
user service 代码:
package com.mvc.service; import com.mvc.domain.User; /** * @Project: spring_mvc_test * * * @Date:2011-9-5 * */ public interface UserService { public void addUser(User user); public User findUser(int id); }
user service impl 代码:
package com.mvc.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mvc.dao.UserDAO; import com.mvc.domain.User; /** * @Project: spring_mvc_test * * @Annotation: userservice 实现类 * 使用@Service标注service * * @Date:2011-9-5 * */ @Service public class UserServiceImpl implements UserService { //@Resource(type=com.mvc.dao.UserDAOImpl.class) @Autowired private UserDAO userDAOImpl; @Override public void addUser(User user) { System.out.println("调用userservice的addUser方法"); userDAOImpl.addUser(new User()); } @Override public User findUser(int id) { System.out.println("调用userservice的findUser方法"); userDAOImpl.findUser(111); return null; } }
发表评论
-
websocket与comet的性能对比
2016-01-02 14:34 2626对于comet长连接来说,服务端如有内容需要发送给客户端时 ... -
新书-大型分布式网站架构设计与实践
2014-08-28 19:51 3503第1章 面向服务的体系架构(soa) 1 本章主要 ... -
浅析http平台的安全稳定性架构
2013-03-01 14:47 3727--转载自《程序员》2013年第2期 前言:随着移动互联 ... -
转: Base64编码
2012-09-21 16:39 1393什么是Base64? 按照RFC2045的定义,Base64被 ... -
spring整合ibatis事务管理
2011-11-17 14:52 3458Spring通过DAO模式,提供了对iBATIS的良好支持。S ... -
mustache模板技术
2011-06-28 11:37 4228项目首页:http://mustache.github.com ...
相关推荐
- **基本概念**:Spring MVC提供了一个灵活的MVC实现,包括请求映射、视图解析、模型绑定等功能。它通过DispatcherServlet作为前端控制器,负责接收请求并分发到相应的处理器。 - **组件**:主要包括Model、View、...
7. **多视图解析器**:Spring MVC支持多种视图解析器,如JSP、FreeMarker、Thymeleaf等,可以根据项目需求灵活选择。 8. **模板引擎集成**:例如,与Thymeleaf的集成使得开发者能编写声明式逻辑的模板,提高了视...
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...
7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,视图解析器可以根据配置自动选择合适的视图技术。 8. **异步处理**:Spring MVC 4.0引入了异步请求处理,通过@...
视图解析器是Spring MVC中用于确定视图名对应的实际资源路径的组件。例如,InternalResourceViewResolver可以将视图名转换为JSP页面的URL。 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一。在...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...
六、Spring MVC mvc.xml配置文件片段讲解:Spring MVC通过配置文件来定义处理器映射、视图解析器、静态资源处理等。配置文件对于整个框架的运行至关重要。 七、Spring MVC如何访问到静态的文件:描述了如何配置...
`org.springframework.web.servlet-3.1.1.RELEASE.jar` 是Spring MVC的主要组件,它负责处理HTTP请求,提供模型-视图-控制器的实现,包括控制器、视图解析和模型数据绑定等功能。 `org.springframework.web-3.1.1....
2. **Spring MVC 模块**:`spring-webmvc.jar` 是 Spring MVC 的核心组件,它实现了 MVC 设计模式,提供请求处理、视图解析等功能。这个 jar 包是构建基于 Spring 的 Web 应用必不可少的。 3. **Spring Web 模块**...
以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...
为了实现这些功能,Spring MVC的配置文件(如servlet-context.xml)需要正确配置组件扫描、视图解析器、拦截器等。不过,现代Spring MVC项目往往倾向于使用Java配置或Spring Boot的自动配置,减少了XML的使用。 在...
### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...
9 Spring MVC的配置:从配置文件web.xml开始到使用Java配置类,了解这些配置是如何在源代码中被Spring MVC解析和使用的。 通过深入阅读和理解Spring MVC的源代码,我们可以更深刻地认识到框架的设计哲学和实现原理...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。Spring MVC的设计目标是提供一个清晰的组件化架构,使得开发者可以独立地开发和测试控制器、...
- 配置Spring MVC:在Spring的配置文件中,我们需要定义DispatcherServlet、视图解析器和处理器映射器等。 - 集成MyBatis:引入MyBatis的依赖,配置SqlSessionFactoryBean,创建MapperScannerConfigurer扫描Mapper...
**Spring MVC 4.2.4.RELEASE 中文文档** Spring MVC是Spring框架的一个核心组件,专注于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者组织和分离应用的业务逻辑、数据处理以及用户界面。...
在提供的"spring MVC.docx"文档中,可能详细介绍了如何配置Spring MVC环境,创建Controller,处理请求,以及如何配置视图解析器等内容。对于初学者来说,这是一份很好的实践指南,可以帮助理解Spring MVC的工作原理...