Spring MVC入门 (环境搭建)

最近看了“跟开涛学 SpringMVC”,想自己总结一下,算是复习了,下面介绍的是使用spring3.x注解方式新建一个web工程的helloword。

  

为什么要使用spring的注解?

1、可以大大减少spring的配置(抛弃了繁琐的的spring配置)

2、不用去继承框架的某个接口,这样就降低了与框架的耦合(低侵入)

  

基于注解的spring MVC

1、创建一个web 工程

2、在web.xml文件中配置如下内容

   

<servlet>
	<servlet-name>myspring</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>myspring</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

  

 备注:默认是在WEB-INF目录下查找myspring-servlet.xml文件,前面的myspring需要与<servlet-name>myspring</servlet-name>对应起来。很多视频或者资料说是跟工程名对应,这个是不正确的 。

如果有多个配置文件,则可以使用“,”或则“空格”分隔,也可以使用正则表达式来匹配多个配置文件,例如:

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>
	  /WEB-INF/servlet1.xml,
	  /WEB-INF/servlet2.xml,
	  /WEB-INF/servlet2/ss*.xml
  </param-value>
</context-param>

 备注:添加上面这个配置,则是自定义配置文件的位置,当然WEB-INF目录下查找myspring-servlet.xml文件还是会自动加载的,彼此相互不影响。

由于自己在开发的过程中发现在默认的配置文件中(myspring-servlet.xml)中写一些spring的配置信息无法识别,因此,将spring的配置不写在这个默认的配置文件中,而是指明其他的具体文件中

3、指定显示页面的类型,和页面存放的位置

<!-- ViewResolver  视图解析类-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="viewClass"
		value="org.springframework.web.servlet.view.JstlView" />
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
</bean>

目的是指明显示的页面在/WEB-INF/jsp/目录下面,并且是以jsp结尾的文件。 

  

备注: InternalResourceViewResolver 支持JSP和JSTL的技术支持,如果想使用JSTL则需要引入相关的jar包。

4、引入spring框架的处理包

<!--Spring3.1开始的注解 HandlerMapping -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

<!--Spring3.1开始的注解 HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<!--线程安全的访问session -->
	<property name="synchronizeOnSession" value="true" />
</bean>

5、创建一个“控制器”,

    5.1 需要在类上添加@Controller 注解,表示这个类是一个控制器类

    5.2 里面的方法需要添加注解@RequestMapping(value = "/hello"),指定的访问路径

@Controller
public class HelloWorldController {

    @RequestMapping(value = "/hello")
    public ModelAndView helloWorld() {
		//1、收集参数
		//2、绑定参数到命令对象
		//3、调用业务对象
		//4、选择下一个页面
		ModelAndView mv = new ModelAndView();
		//添加模型数据 可以是任意的POJO对象
		mv.addObject("message", "Hello World!");
		//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
		mv.setViewName("hello");
		return mv;
	}
}

在spring配置文件中把该类交给spring容器管理

<bean class="adtec.function1.controller.HelloWorldController"/>

备注:如果地址栏输入http://server:port/project/hello.do则会执行helloWorld()方法,处理完该方法之后页面会跳转到前面配置的/WEB-INF/jsp/hello.jsp页面,在页面中使用${message},则会把Hello World!打印出来。

<!-- 切记,这不是必需的!除非你把注解的 Controller 一个个的注册到容器中。相信大家还是喜欢用 context:compnent-scan 吧。不要认为在 Spring MVC 中才提到 context:component-scan,就认为它只能扫描 @Controller。component-scan 默认扫描的注解类型是 @Component,不过,在 @Component 语义基础上细化后的 @Repository, @Service 和 @Controller 也同样可以获得 component-scan 的青睐 -->
<context:component-scan base-package="org.zachary.spring3.anno.web" />

在浏览器地址栏中输入:http://localhost:8080/myspring/hello.do

猜你喜欢

转载自hbiao68.iteye.com/blog/1948292