spring mvc实例

Spring MVC是spring的一个子模块,用于方便web应用的开发。以下是如何配置和使用spring mvc的一个简单示例。包括用xml文件配置映射以及使用spring的注解。 由于采用maven管理项目的依赖,所以无需自己手动下载各种jar包,在pom文件中添加依赖的坐标,maven会自动下载。

使用xml配置spring的控制器映射实例:

整个项目结构如下图所示:


pom文件中配置如下依赖:

Xml代码 复制代码  收藏代码
  1. <!-- Spring framework -->  
  2.         <dependency>  
  3.             <groupId>org.springframework</groupId>  
  4.             <artifactId>spring</artifactId>  
  5.             <version>2.5.6</version>  
  6.         </dependency>  
  7.   
  8.         <!-- Spring MVC framework -->  
  9.         <dependency>  
  10.             <groupId>org.springframework</groupId>  
  11.             <artifactId>spring-webmvc</artifactId>  
  12.             <version>2.5.6</version>  
  13.         </dependency>  
  14.   
  15.         <!-- JSTL -->  
  16.         <dependency>  
  17.             <groupId>javax.servlet</groupId>  
  18.             <artifactId>jstl</artifactId>  
  19.             <version>1.1.2</version>  
  20.         </dependency>  
  21.   
  22.         <dependency>  
  23.             <groupId>taglibs</groupId>  
  24.             <artifactId>standard</artifactId>  
  25.             <version>1.1.2</version>  
  26.         </dependency>  
  27.   
  28.            
  29.         <dependency>  
  30.             <groupId>javax.servlet</groupId>  
  31.             <artifactId>servlet-api</artifactId>  
  32.             <version>2.5</version>  
  33.             <scope>provided</scope>  
  34.         </dependency>  

整个web.xml配置如下:

Xml代码 复制代码  收藏代码
  1. <web-app id="WebApp_ID" version="2.4"  
  2.     xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  4.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  5.   
  6.     <display-name>Spring Web MVC Application</display-name>  
  7.   
  8.     <servlet>  
  9.         <servlet-name>mvc-dispatcher</servlet-name>  
  10.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  11.         <load-on-startup>1</load-on-startup>  
  12.     </servlet>  
  13.   
  14.     <servlet-mapping>  
  15.         <servlet-name>mvc-dispatcher</servlet-name>  
  16.         <url-pattern>*.htm</url-pattern>  
  17.     </servlet-mapping>  
  18.   
  19.     <context-param>  
  20.         <param-name>contextConfigLocation</param-name>  
  21.         <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>  
  22.     </context-param>  
  23.   
  24.     <listener>  
  25.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  26.     </listener>  
  27.   
  28. </web-app>  


所有以.htm结尾的请求都由spring的核心控制器DispatcherServlet进行处理,该处理器会找到具体的控制器进行请求处理。
mvc-dispatcher-servlet.xml
Xml代码 复制代码  收藏代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  4.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  5.   
  6.     <bean id="viewResolver"  
  7.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  8.         <property name="prefix">  
  9.             <value>/pages/</value>  
  10.         </property>  
  11.         <property name="suffix">  
  12.             <value>.jsp</value>  
  13.         </property>  
  14.     </bean>  
  15.   
  16.     <bean name="/welcome.htm"    
  17.         class="com.mkyong.common.controller.HelloWorldController" />  
  18.   
  19. </beans>  

控制器代码:
Java代码 复制代码  收藏代码
  1. package com.mkyong.common.controller;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4. import javax.servlet.http.HttpServletResponse;   
  5.   
  6. import org.springframework.web.servlet.ModelAndView;   
  7. import org.springframework.web.servlet.mvc.AbstractController;   
  8.   
  9. public class HelloWorldController extends AbstractController {   
  10.   
  11.     @Override  
  12.     protected ModelAndView handleRequestInternal(HttpServletRequest request,   
  13.             HttpServletResponse response) throws Exception {   
  14.   
  15.         ModelAndView model = new ModelAndView("HelloWorldPage"); //加上配置文件中的prefix和suffix就是完整的URL   
  16.         model.addObject("msg""hello world"); //设置模型的值,在视图中可以访问    
  17.   
  18.         return model;   
  19.     }   
  20.   
  21. }  
package com.mkyong.common.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HelloWorldController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		ModelAndView model = new ModelAndView("HelloWorldPage"); //加上配置文件中的prefix和suffix就是完整的URL 
		model.addObject("msg", "hello world"); //设置模型的值,在视图中可以访问  

		return model;
	}

}
spring mvc注解版
项目目录结构和上一个实例相同。
只是控制器是以注解形式的java文件。

Java代码 复制代码  收藏代码
  1. package com.mkyong.common.controller;   
  2.     
  3. import org.springframework.stereotype.Controller;   
  4. import org.springframework.web.bind.annotation.RequestMapping;   
  5. import org.springframework.web.bind.annotation.RequestMethod;   
  6. import org.springframework.web.servlet.ModelAndView;   
  7.     
  8. @Controller  
  9. @RequestMapping("/welcome2008")   
  10. public class HelloWorldController{   
  11.     
  12.     @RequestMapping(method = RequestMethod.GET)   
  13.     public ModelAndView helloWorld(){   
  14.     
  15.         ModelAndView model = new ModelAndView("HelloWorldPage");   
  16.         model.addObject("msg""hello world with spring annotation");   
  17.     
  18.         return model;   
  19.     }   
  20. }  
package com.mkyong.common.controller;
 
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;
 
@Controller
@RequestMapping("/welcome2008")
public class HelloWorldController{
 
	@RequestMapping(method = RequestMethod.GET)
	public ModelAndView helloWorld(){
 
		ModelAndView model = new ModelAndView("HelloWorldPage");
		model.addObject("msg", "hello world with spring annotation");
 
		return model;
	}
}

spring的配置文件也有所不同。

Xml代码 复制代码  收藏代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:context="http://www.springframework.org/schema/context"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  5.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  6.     http://www.springframework.org/schema/context   
  7.     http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
  8.     
  9.     <context:component-scan base-package="com.mkyong.common.controller" />  <!-- make annocation works -->  
  10.     
  11.     <bean id="viewResolver"  
  12.            class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
  13.            <property name="prefix">  
  14.               <value>/pages/</value>  
  15.            </property>  
  16.            <property name="suffix">  
  17.               <value>.jsp</value>  
  18.            </property>  
  19.         </bean>  
  20.     
  21. </beans>  


使用maven的命令 mvn jetty:run启动jetty容器后输入
http://localhost:8080/springMVCAnno/welcome2008.htm即可访问相应的jsp文件。即pages目录下的HelloWorldPage.jsp文件。
注意welcome2008是和控制器@RequestMapping("/welcome2008")一致的,如果不一致,会出现找不到错误。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值