Java EE学习笔记(十一)

时间:2021-07-25 17:21:46

Spring MVC入门

1、Spring MVC概述

1)、Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它与Struts2框架一样,都属于MVC框架,但其使用和性能等方面比Struts2更加优异。

2)、Spring MVC具有以下特点:

a)、是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。

b)、灵活性强,易于与其他框架集成。

c)、提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。

d)、可自动绑定用户输入,并能正确的转换数据类型。

e)、内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单

f)、支持国际化。可以根据用户区域显示多国语言。

g)、支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。

h)、使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。

2、第一个Spring MVC应用

1)、导入jar包

Java EE学习笔记(十一)

2)、配置前端控制器---在web.xml中,配置Spring MVC的前端控制器DispatcherServlet:

①WebContent/WEB-INF/web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xmlns="http://java.sun.com/xml/ns/javaee"
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 6          id="WebApp_ID" version="3.0">
 7     
 8     <servlet>
 9         <!-- 配置前端过滤器 
10             前端控制器DispatcherServlet
11         -->
12         <servlet-name>springmvc</servlet-name>
13         <servlet-class>
14               org.springframework.web.servlet.DispatcherServlet
15          </servlet-class>
16          
17         <!-- 初始化时加载配置文件 -->
18         <init-param>
19         <!-- 配置springMVC配置文件的位置和名称
20         contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等)
21         若不配置它,则默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)
22          -->
23             <param-name>contextConfigLocation</param-name>
24             <param-value>classpath:springmvc-config.xml</param-value>
25         </init-param>
26         
27         <!-- 1表示容器在启动时立即加载Servlet -->
28         <load-on-startup>1</load-on-startup>
29     </servlet>
30     
31     <servlet-mapping>
32         <servlet-name>springmvc</servlet-name>
33         <!-- '/',拦截所有所有URL的请求,并交给前端控制器DispatcherServlet处理 
34             ①*.action,访问以.action结尾由DispatcherServlet进行解析
35             ②/,所有访问的地址都由DispatcherServlet进行解析,使用此种方式可以实现restful风格的url;
36             ③/*,这样的配置不对,使用这种配置,最终要转发到一个jsp页面 ,仍然会由DispatcherServlet解析jsp,
37             不能根据jsp页面找到Handle,会报错。
38         -->
39         <url-pattern>/</url-pattern>
40     </servlet-mapping>
41 </web-app>

②创建Controller类:controller/FirstController.java

 1 package com.itheima.controller;
 2 import javax.servlet.http.HttpServletRequest;
 3 import javax.servlet.http.HttpServletResponse;
 4 import org.springframework.web.servlet.ModelAndView;
 5 import org.springframework.web.servlet.mvc.Controller;
 6 /**
 7  * 控制器类
 8  */
 9 public class FirstController implements Controller{ // 实现Controller接口
10     /*
11      * handleRequest()是Controller接口的实现方法
12      * FirstController类会调用该方法来处理请求,并返回一个包含视图名或包含视图名和模型的ModelAndView对象   
13      */
14     @Override
15     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)  {
16          
17         // 1、创建ModelAndView对象
18         ModelAndView mav = new ModelAndView();
19     
20          // 2、向模型对象中添加数据
21         mav.addObject("msg", "Spring MVC!!!");
22          
23         // 3、设置逻辑视图名,请求就会转发到first.jsp页面
24         mav.setViewName("/WEB-INF/jsp/first.jsp");
25         
26         // 4、返回ModelAndView对象
27         
28         return mav;
29     }
30 }

③src/springmvc-config.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5     http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
 6     
 7     
 8     <!-- 1、配置处理器Handle,映射“/firstController”请求
 9         该Bean会将控制器类FirstController映射到/firstController请求中
10      -->
11     <bean name="/firstController" class="com.itheima.controller.FirstController" />
12     
13     <!-- 2、处理器映射器,将处理器Handle的name作为url进行查找 -->
14     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
15     
16     <!-- 3、处理器适配器,配置对处理器中handleRequest()方法的调用-->
17     <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
18     
19     <!-- 4、视图解析器 
20         InternalResourceViewResolver来解析结果视图
21     -->
22     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
23     
24 </beans> 

④创建视图(view)页面:WebContent/WEB-INF/jsp/first.jsp(在该页面中使用EL表达式获取msg中的信息)

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2      pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 4      "http://www.w3.org/TR/html4/loose.dtd">
 5    
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>入门程序</title>
10 </head>
11 <body>
12      ${msg}
13      <!-- 用EL表达式获取后台处理器封装的信息  -->
14 </body>
15 </html>