Java-SpringMVC学习(一)----概述、第一个springmvc项目

StringMVC

MVC

MVC全称是Model View Controller:

  • 模型(model): 表示应用程序核心(比如数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

  • 视图(view): 显示数据(数据库记录)。是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。

  • 控制器(Controller) 处理输入(写入数据库记录)。是应用程序中处理用户交互的部分。

    通常控制器负责从视图读取数据,控制用户输入,并向模型发送数

MVC一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet+ javabean的模式。

SpringMVC

概述

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

Spring MVC的核心组成以及处理流程:

  • 1.DispatcherServlet(前端控制器): 是整个SpringMVC的控制中心。浏览器发出请求,DispatcherServlet接收并拦截请求。

    假设请求的url为:http://localhost:8080/springmvc/haha

    http://localhost:8080是服务器域名

    springmvc部署在服务器上的web站点

    haha表示控制器

    即请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

  • 2.HandlerMapping(处理器映射器): 被DispatcherServlet调用,根据url查找Handler,处理后返回。

  • 3.HandAdapter(处理器适配器):被DispatcherServlet调用,按着给定的规则执行Handler

  • 4.Handler(处理器):找到具体的Controller并让它执行。

    5.Controller将执行信息(如:ModelAndView)返回给HandAdapter

    6.HandAdapter将信息又传给DispatcherServlet

  • 7.ViewResolver(视图解析器):被DispatcherServlet调用,解析传来的视图信息

    8.DispatcherServlet调用具体的视图

    9.将视图展现给用户

代码实现(第一个springmvc项目)

❤️.<1.建一个MAVEN项目,在pom.xml中设置资源过滤并引入相关依赖(导包)

资源过滤

<build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
</build>

导包

 <dependencies>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <!-- Spring MVC 及 Spring系列包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.24.RELEASE</version>
        </dependency>
        <!--Servlet核心-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!-- JSTL -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
❤️.<2.编写Web.xml文件
<?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">

  <!--注册servlet-->
  <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-servlet.xml</param-value>
    </init-param>

    <!--设置启动顺序-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!--所有的请求都会被SpringMVC拦截-->  
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>
❤️.< 3.编写springMVC配置文件

命名规则:[springmvcNAME]+[-servlet.xml]

​ 例如我写的名字为:springmvc-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: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/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="priv.sehun.controller"/>

    <!-- 让Spring MVC不处理静态资源 -->
    <mvc:default-servlet-handler />
    <!--
    支持mvc注解驱动
        在spring中一般采用@RequestMapping注解来完成映射关系
        要想使@RequestMapping注解生效
        必须向上下文中注册DefaultAnnotationHandlerMapping
        和一个AnnotationMethodHandlerAdapter实例
        这两个实例分别在类级别和方法级别处理。
        而annotation-driven配置帮助我们自动完成上述两个实例的注入。
     -->
    <mvc:annotation-driven/>

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!--前缀-->
        <!--
            在视图解析器中我们把所有的视图都存放在/WEB-INF/目录下,
            这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。
            【jsp】是我起的包名,这个随心起
         -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>


</beans>

❤️.<4.编写Controller
package priv.sehun.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//该注解是为了能让IOC容器初始时可以扫描到
@Controller
//映射请求路径:/haha/hello
@RequestMapping("/haha")
public class HelloController {
    @RequestMapping("/hello")
    public String Hello(Model model){
        model.addAttribute("info","Hello,SpringMVC");
        //视图解析器会将text解析为 /WEB-INF/jsp/text.jsp
        return "text";
    }
}

❤️.<5.编写视图
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${info}
</body>
</html>
❤️.<6.配置Tomcat并运行

在这里插入图片描述
在这里插入图片描述

❤️.<7.项目结构

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值