返回介绍

11.1 SpringMVC 快速体验

发布于 2025-04-22 22:09:16 字数 6752 浏览 0 评论 0 收藏 0

(1)配置 web.xml。

一个 Web 中可以没有 web.xml 文件,也就是说,web.xml 文件并不是 Web 工程必须的。web.xml 文件用来初始化配置信息:比如 Welcome 页面、servlet、servlet-mapping、filter、listener、启动加载级别等。但是,SpringMVC 的实现原理是通过 Servlet 拦截所有 URL 来达到控制的目的,所以 web.xml 的配置是必须的。

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.

com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <display-name>Springmvc</display-name>

   <!--使用 ContextLoaderListener 配置时,需要告诉它 Spring 配置文件的位置 -->

 <context-param>

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

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

 </context-param>

  <!-- SpringMVC 的前端控制器 -->

 <!-- 当 DispatcherServlet 载入后,它将从一个 XML 文件中载入 Spring 的应用上下文,该 XML 文件的名

 字取决于<servlet-name> -->

 <!-- 这里 DispatcherServlet 将试图从一个叫做 Springmvc-servlet.xml 的文件中载入应用上下文,其

 默认位于 WEB-INF 目录下 -->

 <servlet>

  <servlet-name>Springmvc</servlet-name>

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

  <load-on-startup>1</load-on-startup>

 </servlet>

 <servlet-mapping>

  <servlet-name>Springmvc</servlet-name>

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

 </servlet-mapping>

  <!-- 配置上下文载入器 -->

  <!-- 上下文载入器载入除 DispatcherServlet 载入的配置文件之外的其它上下文配置文件 -->

  <!-- 最常用的上下文载入器是一个 Servlet 监听器,其名称为 ContextLoaderListener -->

 <listener>

  <listener-class>org.Springframework.web.context.ContextLoaderListener

  </listener-class>

 </listener>

</web-app>

Spring 的 MVC 之所以必须要配置 web.xml,其实最关键的是要配置两个地方。

contextConfigLocation:Spring 的核心就是配置文件,可以说配置文件是 Spring 中必不可少的东西,而这个参数就是使 Web 与 Spring 的配置文件相结合的一个关键配置。

DispatcherServlet:包含了 SpringMVC 的请求逻辑,Spring 使用此类拦截 Web 请求并进行相应的逻辑处理。

(2)创建 Spring 配置文件 applicationContext.xml。

<?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:tx="http://www.Springframework.org/schema/tx"

 xsi:schemaLocation="http://www.Springframework.org/schema/beans

 http://www.Springframework.org/schema/beans/Spring-beans-2.5.xsd

 http://www.Springframework.org/schema/tx

 http://www.Springframework.org/schema/tx/Spring-tx-2.5.xsd">

  <bean id="viewResolver" class="org.Springframework.web.servlet.view. Internal Resource

 ViewResolver">

   <property name="prefix" value="/WEB-INF/jsp/"/>

   <property name="suffix" value=".jsp"/>

 </bean>

</beans>

InternalResourceViewResolver 是一个辅助 Bean,会在 ModelAndView 返回的视图名前加上 prefix 指定的前缀,再在最后加上 suffix 指定的后缀,例如:由于 XXController 返回的 ModelAndView 中的视图名是 testview,故该视图解析器将在/WEB-INF/jsp/testview.jsp 处查找视图。

(3)创建 model。

模型对于 SpringMVC 来说并不是必不可少,如果处理程序非常简单,完全可以忽略。模型创建主要的目的就是承载数据,使数据传输更加方便。

public class User {

  private String username;

private Integer age;

  public String getUsername() {

   return username;

 }

  public void setUsername(String username) {

   this.username = username;

 }

  public Integer getAge() {

   return age;

 }

  public void setAge(Integer age) {

   this.age = age;

 }

}

(4)创建 controller。

控制器用于处理 Web 请求,每个控制器都对应着一个逻辑处理。

public class UserController extends AbstractController {

 @Override

protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse

arg1) throws Exception {

  List<User> userList = new ArrayList<User>();

  User userA = new User();

  User userB = new User();

 userA.setUsername("张三");

 userA.setAge(27);

 userB.setUsername("李四");

 userB.setAge(37);

 userList.add(userA);

 userList.add(userB);

  return new ModelAndView("userlist", "users", userList);

 }

}

在请求的最后返回了 ModelAndView 类型的实例。ModelAndView 类在 SpringMVC 中占有很重要的地位, 控制器执行方法都必须返回一个 ModelAndView,ModelAndView 对象保存了视图以及视图显示的模型数据,例如其中的参数如下。

第一个参数 userlist:视图组件的逻辑名称。这里视图的逻辑名称就是 userlist,视图解析器会使用该名称查找实际的 View 对象。

第二个参数 users:传递给视图的,模型对象的名称。

第三个参数 userList:传递给视图的,模型对象的值。

(5)创建视图文件 userlist.jsp。

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<h2>This is SpringMVC demo page</h2>

<c:forEach items="${users}" var="user">

  <c:out value="${user.username}"/><br/>

  <c:out value="${user.age}"/><br/>

</c:forEach>

视图文件用于展现请求处理结果,通过对 JSTL 的支持,可以很方便地展现在控制器中放入 ModelAndView 中的处理结果数据。

(6)创建 Servlet 配置文件 Spring-servlet.xml。

<?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:tx="http://www. Spring

  framework. org/schema/tx"

 xsi:schemaLocation="http://www.Springframework.org/schema/beans

http://www.Springframework.org/schema/beans/Spring-beans-2.5.xsd

http://www.Springframework.org/schema/tx

http://www.Springframework.org/schema/tx/Spring-tx-2.5.xsd">

  <bean id="simpleUrlMapping"

  class="org.Springframework.web.servlet.handler.SimpleUrlHandlerMapping">

   <property name="mappings">

   <props>

     <prop key="/userlist.htm">userController</prop>

   </props>

  </property>

 </bean>

  <!-- 这里的 id="userController"对应的是<bean id="simpleUrlMapping">中的<prop>里面的

 value -->

  <bean id="userController" class="test.controller.UserController" />

</beans>

因为 SpringMVC 是基于 Servlet 的实现,所以在 Web 启动的时候,服务器会首先尝试加载对应于 Servlet 的配置文件,而为了让项目更加模块化,通常我们将 Web 部分的配置都存放于此配置文件中。

至此,已经完成了 SpringMVC 的搭建,启动服务器,输入网址 http://localhost:8080/Springmvc/userlist.htm。

看到了服务器返回界面,如图 11-1 所示。

figure_0305_0047

图 11-1 Spring MVC 快速体验

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。