3.2.2 SpringMVC配置式开发

SpringMVC配置式开发

1. SpringMVC运行原理(执行过程) 

2. 需求

用户提交一个请求, 服务端处理器接收到请求后, 给出一条信息,在相应页面中显示该条信息

3. 开发步骤

(1) 导入jar包

导入18个jar包

com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

junit-4.9.jar

mysql-connector-java-5.1.30.jar

spring-aop-4.1.6.RELEASE.jar

spring-aspects-4.1.6.RELEASE.jar

spring-beans-4.1.6.RELEASE.jar

spring-context-4.1.6.RELEASE.jar

spring-context-support-4.1.6.RELEASE.jar

spring-core-4.1.6.RELEASE.jar

spring-expression-4.1.6.RELEASE.jar

spring-jdbc-4.1.6.RELEASE.jar

spring-tx-4.1.6.RELEASE.jar

spring-web-4.1.6.RELEASE.jar

spring-webmvc-4.1.6.RELEASE.jar

(2) 配置web. xml, 注册SpringMVC前端控制器(中央调度器)

<welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <!-- 注册springmvc前端控制器(中央调度器) -->

  <servlet>

  <servlet-name>springmvc</servlet-name>

  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  <!-- 指定springmvc配置文件的路径以及名称 -->

  <init-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath:springmvc.xml</param-value>

  </init-param>  

</servlet>

  <servlet-mapping>

  <servlet-name>springmvc</servlet-name>

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

  </servlet-mapping>

(3) 编写SpringMVC后端控制器

public class MyController implements Controller {

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

ModelAndView mv = new ModelAndView();

System.out.println("进入到后端控制器方法!");

mv.addObject("msg", "Hello SpringMVC!");

mv.setViewName("/jsp/welcome.jsp");

return mv;

}

}

(4) 编写springmvc配置文件, 注册后端控制器( 注意id写法格式)

新建一个springmvc.xml

<bean id="/my.do" class="com.mypack.handlers.MyController"></bean>

(5) 编写跳转资源页面

编写welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

...

<body>

    ${msg}

</body>

...

 

控制类代码:

public class MyController implements Controller {

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

ModelAndView mv = new ModelAndView();

System.out.println("进入到后端控制器方法!");

mv.addObject("msg", "Hello SpringMVC!");

mv.setViewName("/jsp/welcome.jsp");

return mv;

}

}

4. web. xml中urlpattern配置问题

(1) 配置/和/*的区别

<url-pattern>/*</url-pattern>: 这种形式将会覆盖所有其它的servlet。不管你发出了什么样的请求,最终都会在这个servlet中结束。因此,对于servlet来说,这是一个很糟糕的URL模式。通常来讲,你只会想要在一个Filter中使用这种模式。它可以通过调用doFilter()方法来使请求继续。

<url-pattern>/</url-pattern>: 这种形式不会覆盖任何其它的servlet。它仅仅替换了servlet容器中内建的默认servlet。这种形式通常只用来请求静态资源(CSS/JS/image等)和展示目录的列表。

(2) 静态资源无法访问解决方案( 三种)

1) 第一种:web.xml配一个servlet-mapping,名字叫default

<servlet-mapping>

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

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

</servlet-mapping>

<servlet-mapping>

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

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

</servlet-mapping>

<servlet-mapping>

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

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

</servlet-mapping>

2) 第二种:springmvc.xml中,mvc标签增加一个默认的servlet处理器标签

<mvc:default-servlet-handler/> 

3) 第三种:springmvc.xml中,mvc标签resources属性images下的所有资源,都会进行映射

<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>

猜你喜欢

转载自www.cnblogs.com/kendyho/p/10784831.html