`
kingxss
  • 浏览: 973430 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring3 MVC的最佳实践和理解(1)

阅读更多

 

 个人学习参考所用,勿喷! 

 

1.搭建一个基于Spring3的MVC应用。

1.1) 建立一个webapp,这里还是采用Maven构建,构建过程参考limingnihao的blog(写得相当的详细!!!): 使用Eclipse构建Maven的SpringMVC项目

 

1.2) 编辑pom.xml,添加Spring3 MVC所必须的jar包,除了Spring基本的core、bean等jar包,这里还需要有web和mvc的相关jar。具体根据需要来。需要哪些jar在附件的工程中都有。需要注意:pom.xml中不用加入el-api.jar和jsp-api.jar两个jar包,因为tomcat目录下有,如果加入了,即使设置scope=provided,也会会产生Unable to read TLD "META-INF/fmt.tld"的Exception。但是如果没有这jsp-api这个jar,会带javax.servlet.jsp.JspException cannot be resolved to a type等Exception。这里不许理会,因为从正常的运行结果来看是正常的。或者添加jar后删除掉tomcat目录下的对应jar来解决问题

 

1.3) 编辑webapp的web.xml,添加DispatcherServlet入口。以下为到web.xml的根目录的内容和说明:

<!-- 多个Spring的配置文件,要以逗号或者空格分割 -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/court-service.xml</param-value>
</context-param>
<!-- 使用监听器ContextLoaderListener加载是上述的多个文件,加载到根应用上下文中-->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 可以配置多个DispatcherServlet到不同的路径 -->
<servlet>
	<servlet-name>court</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<!-- 相对使用监听器ContextLoaderListener加载,每个DispatcherServlet将其加载到自己的应用上下文,
	并且可引用根应用上下文为其上级 。每个DispatcherServlet实例加载上下文可以访问甚至覆盖根应用的上下文中声明的bean(反之不行),
	但是每个DispatcherServlet实例加载上下文无法相互访问-->
	<!-- 
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/court-servlet.xml,/WEB-INF/court-service.xml</param-value>
	</init-param>
	 -->
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>court</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>
 

 

1.4) 创建一个用Spring的annotation标识@Controller表示的控制器,并且用@RequestMapping来映射URL到这个控制器。具体的代码如下:

@Controller
// Bind controller to URL /welcome
// initial view will be resolved to the name returned in the default GET method
@RequestMapping("/welcome")
public class WelcomeController {
    // Controller will always look for a default GET method to call first, irrespective of name
    // In this case, named welcome to ease identification
    @RequestMapping(method = RequestMethod.GET)
    // Method contains Model input to setup date object
    // NOTE: Model is a Java 5 interface -- newer than the older ModelMap and still older ModelAndView
    public String welcome(Model model) {
        Date today = new Date();
	// Add date to model so it can be display in view
	model.addAttribute("today",today);
	// Return view welcome. Via resolver the view
	// will be mapped to /WEB-INF/jsp/welcome.jsp
        return "welcome";
    }
}

 

1.5) 创建了控制器并且将应用方法绑定到了相对应URL路径上,那么现在应该来激活这些控制器标识。在WEB-INF下创建court-servlet.xml,虽然在web.xml没有直接配置这个文件,但是ContextLoaderListener会自动的搜索WEB-INF下*-servlet.xml(这里的*是web.xml中配置的配置的DispatcherServlet的名称)。这里court-servlet.xml具体的配置和说明如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   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">

	<!-- 激活自动检测注解,自动搜索@Controller和@RequstMapping注解的存在,包括其下面的子包-->
	<context:component-scan base-package="com.watson.action" />
	
	<!-- 处理类级别的@RequstMapping注解 -->	 
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	<!-- 处理方法级别的@RequstMapping注解 -->	
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	
	<!-- DispatcherServlet接收到处理程序返回的视图名称,并解析为视图实现以供显示。 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

 

1.6) 根据1.5步中对逻辑视图和视图文件的映射关系的设置,这里需要在WEB-INF的view目录下创建一个JSP文件welcome.jsp用来处理上述1.4步中的控制器的返回结果,并返回给浏览器。具体代码如下:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>  
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h2>Welcome to Court Reservation System</h2>
Today is <fmt:formatDate value="${today}" pattern="yyyy-MM-dd" />.
<hr />
Handling time : ${handlingTime} ms
<br />
Locale : ${pageContext.response.locale}
</body>
</html>

 

1.7) 最后发布创建的应用到tomcat下,在本地的浏览其中输入http://[host]:[port]/[appname]/welcome,例如楼主的实例中输入如下:http://localhost:7070/Spring3MVC/welcome。浏览器显示的结果如下:

Welcome to Court Reservation System

Today is 2012-04-23.
Handling time : 0 ms 
Locale : zh_CN

 


参考:

juyon的blog: spring3 MVC国际化支持之中文乱码

Gary Mark等的书籍:《Spring Recipes》2ed

 

分享到:
评论

相关推荐

    Spring MVC jar包

    而`spring-framework-2.5.6-with-docs.zip`可能包含了Spring 2.5.6的源码和文档,帮助开发者了解Spring MVC的内部实现和最佳实践。 总之,这个压缩包提供了开发基于Spring MVC和Hibernate的Java Web应用所需要的...

    spring-mvc-showcase

    首先,"spring-mvc-showcase" 是 SpringSource 提供的一个示例应用,用于展示 Spring MVC 的各种特性和最佳实践。这个项目包含了一系列精心设计的示例,涵盖了从基本请求处理到复杂业务逻辑的多种场景,是学习 ...

    Spring3 MVC 深入研究

    **Spring3 MVC 深入研究*...通过深入理解其核心机制和最佳实践,开发者可以构建高效、可维护的Web应用。随着Spring框架的不断演进,如Spring Boot和Spring Cloud等,Spring3 MVC的理念和设计模式仍具有很高的参考价值。

    网上书城 spring-mvc

    《网上书城 Spring-MVC》项目是基于Spring-MVC框架构建的一个典型电子商务平台,它展示了如何使用Spring-MVC来实现高效、...开发者可以通过学习和实践这个项目,深入理解Spring-MVC的机制和最佳实践,提升Web开发能力。

    Maven构建Spring3mvc和Hibernate

    ** Maven构建Spring3 MVC与Hibernate整合详解 ** 在软件开发中,Maven是一个强大的...在实际开发中,还需要结合最佳实践和具体需求进行调整和优化。通过阅读博文链接中的内容,可以获取更具体的实现细节和示例代码。

    Spring4Spring-MVc.rar_mvc4_spring4_spring4 mvc_www.mvn3

    同时,模板中的最佳实践和常见配置示例可以帮助开发者理解和学习这些技术的使用方式。 在实际使用过程中,开发者可以按照以下步骤操作: 1. 解压"Spring4Spring-MVc.rar",得到项目目录结构。 2. 使用IDE导入Maven...

    廖雪峰 Spring 2.0 核心技术与最佳实践 高清扫描版

    《Spring 2.0 核心技术与最佳实践》是由知名IT教育家廖雪峰编写的教程,旨在为从初学者到高级工程师提供全面而深入的Spring 2.0框架理解与应用指导。Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛使用...

    Spring.MVC学习指南.pdf

    以上是Spring MVC的基本知识点,这份学习指南可能会详细讲解这些内容,并提供实际案例和最佳实践,帮助读者从基础到高级全面掌握Spring MVC。通过深入学习,开发者能够更好地构建高效、可扩展的Web应用。

    Spring3MVC+ajax

    在Web应用开发中,Spring3 MVC框架和Ajax技术的结合使用能够极大地提升用户体验,实现页面的无刷新更新。本文将深入探讨如何在Spring3 MVC项目中集成Ajax,以便更好地理解这两者的协同工作原理。 **一、Spring3 MVC...

    Java EE企业级应用开发教程(Spring Spring MVC MyBatis)(黑马程序员编著)

    通过学习本书,开发者不仅可以掌握Java EE开发的基本技能,还能深入理解Spring、Spring MVC和MyBatis这三个框架的原理和最佳实践。这将有助于他们在实际工作中构建出更加高效、可扩展的后端应用,同时也能提升团队...

    Spring核心技术与最佳实践

    通过深入理解Spring的核心技术和最佳实践,开发者可以创建出高效、可维护的Web应用程序。在实际开发中,掌握HTTP协议原理、Servlet组件的使用以及Spring MVC的配置和编程模型,对于优化代码结构和提升开发效率至关...

    【面试资料】-(机构内训资料)看透Spring MVC源代码分析与实践.zip

    在面试中,对Spring MVC的深入理解和源代码分析能力通常被视为高级Java开发者的重要技能。这份【面试资料】-(机构内训资料)看透Spring MVC源代码分析与实践.zip文件很可能是为了帮助求职者准备相关面试问题而设计...

    spring mvc step by step,例子

    在实际应用中,我们还会涉及到一些高级特性和最佳实践,例如: - **AOP(面向切面编程)**:可以用来实现事务管理、日志记录等功能,通过定义切面和通知,将这些通用逻辑与业务代码解耦。 - **Spring Data JPA**:...

    Mastering Spring Webmvc

    《精通Spring Web MVC》 Spring Web MVC是Spring框架的核心组件之一,它为构建基于Java的Web应用程序提供了模型-...通过阅读《Mastering Spring Webmvc》及参考博文,可以深入理解Spring MVC的内部机制和最佳实践。

    Spring mvc整合mybatis例子

    在IT行业中,Spring MVC 和 MyBatis 是两个非常重要的框架,它们分别负责Web应用程序的控制器层和数据访问层。Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化...

    最新Spring3 MVC 示例 demo程序

    这个"最新Spring3 MVC 示例 demo程序"旨在帮助开发者理解并掌握Spring 3的最新特性和最佳实践。 1. **Spring MVC基本架构** Spring MVC通过DispatcherServlet作为前端控制器,它负责接收HTTP请求,并根据请求信息...

    spring4-mvc-gradle

    《Spring4-MVC-Gradle:构建现代Java Web应用程序的基石》 在现代Web开发领域,Spring框架以其强大的功能和灵活性...通过深入研究这个项目,你可以掌握构建现代Web应用的关键技术和最佳实践,从而提升你的开发技能。

    spring-MVC搭建所需包(spring3.0)附带搭建源码

    - 开源项目:通过阅读和分析开源项目中的Spring MVC代码,可以学习到实际应用场景下的最佳实践。 总之,Spring MVC提供了一种强大且灵活的方式来构建Web应用程序,其注解驱动的特性极大地简化了开发流程。通过理解...

Global site tag (gtag.js) - Google Analytics