SpringMVC1

本文围绕SpringMVC展开,介绍了创建web项目的步骤,包括编写web.xml、springMVC配置文件、注册视图解析器等。分析了入门代码,如前端控制器配置、spring配置文件命名和路径修改、视图解析器设置。还讲解了控制器的xml和注解开发模式,以及注解使用前提和测试程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC

  • 创建web 项目
  • 编写web.xml, 注册servlet
  • 编写springMVC 配置文件
    • 注册视图解析器
  • 编写控制器
  • 编写界面

项目结构

TIM截图20190530225143.png

SpringMVC 流程图

SpringMVC 入门程序

  • web.xml
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <!-- 注册一个前端控制器
  DispatcherServlet
   -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>


  • spring 配置文件(sringmvc-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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
    InternalResourceViewResolver
        配置一个视图解析器
        常用:内部资源视图解析器
     -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

    <bean class="HelloController" name="/helloController" />

</beans>

  • HelloContorller.java
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @ClassName HelloController
 * @Author 秃头的JJ
 * Date 2019/5/30 0030 22:53
 * Version 1.0
 * 实现一个Controller 接口的方式
 */
public class HelloController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        // 创建ModelAndView 实例
        ModelAndView modelAndView = new ModelAndView();
        // 设置参数
        modelAndView.addObject("msg", "欧阳铁柱");
        // 逻辑视图名 --- name.jsp
        modelAndView.setViewName("name");
        //返回ModelAndView 实例
        return modelAndView;
    }
}


  • name.jsp
<%@ page import="org.springframework.web.servlet.ModelAndView" %><%--
  Created by IntelliJ IDEA.
  User: JJR
  Date: 2019/5/30 0030
  Time: 23:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
name:${msg }
</body>
</html>

入门代码分析
前端控制器(web.xml)

配置前端控制器,目的在于让SpringMVC 去处理所有请求

配置

  • /:不会拦截*.jsp
  • /*:会拦截所有,导致报404 错误
  • *.do拦截以.do 结尾的支援
spring 配置文件的名字
  • 默认需要定义为[servlet-name]-servlet.xml
  • 修改为自定义名字
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>namespace</param-name>
      <param-value>springmvc</param-value>
    </init-param>
  </servlet>
  • 默认路径为/WEB-INF
  • 修改路径
<init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
视图解析器
  • springMVC 支持多种视图技术

jsp、freemark、thymeleaf

  • 这里使用的是内部的资源视图解析器
  • 视图前缀
  • 视图后缀
<!-- 前缀 -->
<property name="prefix" value="/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />

modelAndView.setViewName("name");

  • 实际上是配置了访问资源的前缀和后缀,即访问路径为/jsp/XXXX.jsp
  • XXXX 为modelAndView 实例调用setViewName() 方法设置的名称

TIM截图20190531160820.png

  • 该方式实现的功能等价于
    httpServletRequest.getRequestDispatcher("jsp/name.jsp").forward(httpServletRequest, httpServletResponse);
    ,但是不能讲MadeAndView 实例进行传输
控制器
xml 开发模式
  • 这里的控制器是使用的传统的实现接口(Controller)的方式实现的
  • 在实现Controller 接口后,会实现handleRequest() 方法,并返回ModeAndView 的实例
  • ModeAndView 是SpringMVC 用来将模型和视图结合使用的,再Mode 填充对象,再具体的视图
    进行展示
  • 对Controller 实现类的配置

在实现接口并实现方法后,在spring 配置文件内对Contorller 配置Bean.
需要配置Bean 所在类以及Bean 的名称(id / name), 并且以名称作为方式的URI


<!-- 该Bean 使用/helloController 和/test 都可以访问 -->
<bean class="HelloController" name="/helloController" id="/test" />
注解开发模式(开发常用)
  • 基本注解
  • @Contorller
  • @RequestMapping
    注解使用前提
  • 配置注解扫描
  • RequestMapping 注解
  • 该注解可以在Class 上配置,也可以在Method 上配置(一般都是组合使用)
  • 组合使用时,需要在spring 配置文件内使用<context:component-scan base-package=“packgeName” /> 进行包扫描注解
  • 测试程序
  • web.xml(前端控制器)
<!-- 注册一个前端控制器
      DispatcherServlet
   -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>namespace</param-name>
      <param-value>springmvc</param-value>
    </init-param>
    <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>/</url-pattern>
  </servlet-mapping>

  • springMVC 配置文件 —> 添加context 的命名空间用于配置注解
<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">


    <!-- 配置注解 -->
    <context:annotation-config></context:annotation-config>
</beans>

  • MyController.java(控制器)
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @ClassName MyController
 * @Author 秃头的JJ
 * Date 2019/5/31 0031 16:56
 * Version 1.0
 */
// 创建控制器
@Controller
public class MyController {

    // 拦截URI 为/test 的请求
    @RequestMapping(value = "/test")
    public String test(Model model){
        // 想model 内添加数据
        model.addAttribute("name", "欧阳铁柱");
        // 这里return 的就是view 的名称 ----- /jsp/test.jsp
        return "test";
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值