SpringMVC 概述

SpringMVC 简介

SpringMVC是Spring框架的一部分,是在Spring3.0以后发布的。

 

SpringMVC的简单应用

用户提交一个请求,服务端处理器在接收到这个请求之后,给出一条欢迎信息。

​​​​​​​SpringMVC框架的执行流程

 

​​​​​​​配置web.xml

url-pattern只能配*.do , 不能配  /* , 因为 /* 会匹配所有请求如果过来的是静态页面的请求,那么中央处理器把这个路径交给处理器,但是处理器找不到对应的东西所以这时会出现404错误

最好不要写为 / ,它也会拦截所有资源请求,但是,它只会处理动态资源请求

当添加图片的时候(链接js,css的时候),就会访问不到,因为图片的加载也是请求,而且图片属于静态请求,从而不会处理,所以导致加载不出来

 

Resultful 风格形式的请求路径方法,必须使用/ , 而不是*.do之类的。这就会出现上面所述的问题,下面是解决办法。

解决配成 / 后可以请求处理静态请求的方案:

 

方案一:

   <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.jpg</url-pattern>

   </servlet-mapping>

这样就会处理*.jpg的请求(把所有静态资源请求的路径都列出来)

default所对应的servlet类在tomcat中的conf的web.xml中已经配置其作用是专门匹配没有处理的静态资源的

方案二:

   在springmvc-servlet.xml中配置<mvc:default-servlet-handler/>就可以了<mvc:default-servlet-handler/>会将对静态资源的访问的请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletHttpRequestHandler对象。而该处理器调用了DefaultServlet来处理静态资源的访问请求

   当然想要使用<mvc:.../>标签,需要mvc约束

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVCDemoA</display-name>
  <!-- 注册中央调度器 -->
  <servlet>
  	<servlet-name>txg</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 执行springMVC配置文件的位置以及文件名 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-servlet.xml</param-value>
  	</init-param>
  	<!-- 表示在启动tomcat服务器的时候就加载该servlet,数字越小,优先级越大 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>txg</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 

配置springmvc-servlet.xml

这个xml文件,默认情况下是要和web.xml在一个目录下,且命名格式为servlet-name的值加上-servlet.xml。这样才能找到这个xml文件。如果不是默认的要求,则需要配置下面的<init-param>进行指定。

该xml文件是进行bean的注册的。

对于视图解析器,可以配置访问路径的前后缀,其原理就是字符串的拼接。

<?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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">
	<!-- 注册视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 访问路径前缀 -->
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<!-- 访问路径后缀 -->
		<property name="suffix" value=".jsp"/>
	</bean>
	<!-- 注册处理器
		id以 / 开头的
		.do形式的请求
		当请求/my.do的时候,会访问相应的class,进行处理
	 -->
	<bean id="/my.do" class="com.ambow.handlers.MyController"></bean>
</beans>

 

创建MyController类

实现Controller接口,并对MyController进行注册,在springmvc-servlet.xml中。

执行执行handleRequest方法,返回ModelAndView的对象。

mv.setViewName(“要显示的前端页面的路径,比如jsp的路径”)

 

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class MyController implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{
		ModelAndView mv = new ModelAndView();
		//其底层执行的是request.setAttribute()方法
		mv.addObject("message", "hello SpringMVC");
		mv.setViewName("welcome");
		return mv;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值