[SpringMVC-初始] 初始SpringMVC
关于SpringMVC的简介
A.SpringMVC概述
作用:
SpringMVC框架是SpringFramWork中实现了MVC架构模式的轻量级子框架
用于将WEB层进行职责解耦,松散的耦合可插拔组件结构,
比其他的MVC框架有更强的扩展性和灵活性
优点:
简介的MVC设计
与Spring框架的无缝集合
灵活的URL映射
丰富的视图(字符串,对象,转发,重定向,json,xml,图片...)支持
B.新建一个SpringMVC项目
HelloController.java
package com.stu.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 文件名称: com.stu.controller.HelloController.java<br/> * 初始作者: Administrator<br/> * 创建日期: 2018-2-5<br/> * 功能说明: 新建一个Controller控制器 <br/> * =================================================<br/> * 修改记录:<br/> * 修改作者 日期 修改内容<br/> * ================================================<br/> * Copyright (c) 2010-2011 .All rights reserved.<br/> */ // @Controller注解:使得一个普通的POJO(Plain Old Java Object,没有实现过任何接口或继承过任何类的Java对象)类成为一个控制器。 @Controller // @RequestMapping注解:用来指定请求的映射路径,可以加在类前面,也可以加在方法前面 // 例如在类前面加上@RequestMapping("/hello") 表示通过/hello能够访问到HelloController这个类 // 对于不同的Controller类,类前面的@RequestMapping对应的映射路径不要重复! @RequestMapping("/hello") public class HelloController { @RequestMapping("/demoForHello") // 说明该方法的访问路径是/hello/demoForHello // 即在hello注解中的demoForHello注解的方法 public String helloPage() { //返回的为视图名,前缀+返回值+后缀名=最后 跳转/转发 路径 return "Hello"; } }
通过浏览器地址栏访问容器地址:http://127.0.0.1:7070/SpringMVCDemo/hello/demoForHello 则会根据返回的 “Hello" 匹配相应的界面。
前缀和后缀在SpringMVC-servlet.xml中配置
<!-- 注解扫描器 ,base-package用于指定要扫描的包的路径 当前配置用来扫描com.niit.controller包及其子包下所有的类,所有含@Controller注解的类就会成为一个控制器类(就有了处理请求和返回响应的能力) 另外被@Controller注解标记的类也会成为Spring IOC 容器中被管理的一个对象 --> <context:component-scan base-package="com.stu.controller"></context:component-scan> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/"></property> <!-- 后缀 --> <property name="suffix" value=".jsp"></property> </bean> <!-- 不拦截静态资源 --> <mvc:annotation-driven></mvc:annotation-driven> <mvc:default-servlet-handler />
编辑一个 Hello.jsp 文件,文件名和方法返回值大小写一致。
并且在web.xml中添加如下配置信息
<!-- SpringMVC的中央控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 也可以通过修改Servlet的初始化参数来指定要加载的SpringMVC配置文件所在的路径 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/springMVC-servlet.xml</param-value> <!-- 从类路径加载 --> <!--<param-value>classpath:applicationContext.xml</param-value>--> </init-param> <!--页面加载时开始加载--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <!-- /* 拦截的是所有的路径,如果直接访问jsp,那么不可能存在以/***/***.jsp为路径的控制器 如果访问/hello/hello01 那么在转发过程中依然跳转到.jsp路径,和前面的场景一样是错误的 --> <!-- / 只会拦截路径型请求,例如 /hello/hello01 不会拦截后缀型请求,例如jsp 但是会拦截纯静态资源,例如css、js、图片之类 如果要纯静态资源能够被正常加载,那么需要在Spring配置文件中加上: <mvc:annotation-driven/> <mvc:default-servlet-handler/> --> <url-pattern>/</url-pattern> </servlet-mapping>
添加到Tomcat容器中,用浏览器进行访问结果如下