SpringMVC

springMVC的工作流程:

 

 

 配置json返回对象方式一;xml

导入json包

 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
<!-- 配置处理器映射器   -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            </list>
        </property>
    </bean>
/**
     * 配置json返回对象,让spring自动帮助我将对象返回
     * @return
     * @throws JsonProcessingException
     */
    @RequestMapping("/user6")
    @ResponseBody //告知spring框架不进行视图跳转,直接返回响应数据
    public User index6() throws JsonProcessingException {
        User user = new User();
        user.setAge(19);
        user.setName("yyk");

        return user;
    }

 配置json返回对象方式二:注解

 

 一,引入mvc名称空间

 xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd

二,mvc注解驱动

    <mvc:annotation-driven/>
package com.yg.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yg.bean.User;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@org.springframework.stereotype.Controller
public class Controller {

    //返回String,
    @RequestMapping("/")
    public String index(){
        return "index";
    }

    /**
     * 自己创建视图模型对象,并将其保存数据,设置访问视图
     * @return
     */
    //返回模型视图访问页面
    @RequestMapping("/user")
    public ModelAndView index1(){
        //创建模型视图对象
        ModelAndView modelAndView = new ModelAndView();
        //设置模型数据
        modelAndView.addObject("username","余杨康");
        //设置访问视图名
        modelAndView.setViewName("index");
        return modelAndView;
    }

    /**
     * springMVC在解析时,发现需要掺入一个ModelAndView模型。那么就会自己产生一个模型,并将其传入
     * @param modelAndView
     * @return
     */
    @RequestMapping("/user2")
    public ModelAndView index2(ModelAndView modelAndView){
        //设置模型数据
        modelAndView.addObject("username","余杨康");
        //设置访问视图名
        modelAndView.setViewName("index");
        return modelAndView;
    }

    /**
     * 将视图和模型分解拆开
     * @param model
     * @return
     */
    @RequestMapping("/user3")
    public String  index3(Model model){
        //设置模型数据
        model.addAttribute("username","余杨康");
        //设置访问视图名
        return "index";
    }

    /**
     * 数据会写
     * @return
     */
    @RequestMapping("/user4")
    @ResponseBody //告知spring框架不进行视图跳转,直接返回响应数据
    public String  index4(){
        //设置访问视图名
        return "index";
    }

    /**
     * 将json对象转成字符串输出
     * @return
     * @throws JsonProcessingException
     */
    @RequestMapping("/user5")
    @ResponseBody //告知spring框架不进行视图跳转,直接返回响应数据
    public String  index5() throws JsonProcessingException {
        User user = new User();
        user.setAge(19);
        user.setName("yyk");

        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(user);
        return json;
    }

    /**
     * 配置json返回对象,让spring自动帮助我将对象返回
     * @return
     * @throws JsonProcessingException
     */
    @RequestMapping("/user6")
    @ResponseBody //告知spring框架不进行视图跳转,直接返回响应数据
    public User index6() throws JsonProcessingException {
        User user = new User();
        user.setAge(19);
        user.setName("yyk");

        return user;
    }
}

 

 

 

 

 

 

 

 

 

 

一,MVC

什么是MVC:MVC是软件架构思想,按照模型层,视图层,控制层(属于表示层,所以属于web)来划分,

M:Model,模型层,指工程中的JavaBean

分为业务Bean和实体Bean

* 业务Bean:指Service或者Dao对象,专门用来处理业务逻辑和数据访问。

* 实体Bean:专门用来存储业务数据。

V:View,视图层,指的是工程中的HTML页面和JSP,用来和用户进行数据交互和信息展示

C:Control,控制层,用来接受请求和响应服务器

MVC的工作流程:

 二,SpringMVC

是Spring中的一个模块,用来处理MVC层之间请求与响应的技术

表示层开发的首选方案。

一,SpringMVC的特点

1,SpringMVC 是 Spring下的 一个模块,和IOC容器(控制反转)无缝对接

2,SpringMVC基于servlet,并且SpringMVC包含强大的前端控制器dispatcherServlet,通过dispatcherServlet对请求和响应做统一处理。

3,代码简洁,开发效率高

4,组件化程度高,根据需求配置响应的组件,即配即用

5,适用于大型项目

三,创建SpringMVC项目

一,导入maven

 

二,导入依赖:

 

<dependency>
        <!--SpringMVC-->
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.1</version>
    </dependency>

    <dependency>
        <!--日志-->
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

      <dependency>
        <!-- servlet-api-->
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>

      <dependency>
        <!--spring5和thymeleaf整合包-->
          <groupId>org.thymeleaf</groupId>
          <artifactId>thymeleaf-spring5</artifactId>
          <version>3.0.12.RELEASE</version>
      </dependency>

  </dependencies>

 三,配置xml

一,方式一:默认配置方式

<!--配置springMVC的前端控制器dispatcherServlet,对浏览器的请求中统一处理-->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <!--
      设置springMVC的核心控制器所能处理的请求路径
      所匹配的请求可以包括/login.html,.js,.css
      但是不能包括.jsp请求路径的请求
    -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

不能匹配.jsp的请求原因在于,jsp本身就是一个servlet,处理jsp需要服务器使用特殊的servlet处理,dispatcherServlet无法处理jsp,

/和/*的区别:

/:表示处理除了jsp以外的所有请求

/*:表示任何请求都可以处理

二,方式2:扩展配置方式

<!--配置springMVC的前端控制器dispatcherServlet,对浏览器的请求中统一处理-->
  <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初始化的时间提前到服务器启动时   -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <!--
      设置springMVC的核心控制器所能处理的请求路径
      所匹配的请求可以包括/login.html,.js,.css
      但是不能包括.jsp请求路径的请求
    -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

四,创建控制器

@Controller
public class HelloController {
}

五,配置springMVC的配置文件

开启组件扫描方式二:

 <!--开启组件扫描    扫描mvc包下的controller包下的所有内容-->
    <context:component-scan base-package="mvc.controller"></context:component-scan>

 配置thymeleaf视图解析器

<!--配置thymeleaf视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean
                        class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">

                        <!--视图前缀-->
                        <property name="prefix" value="/WEB-INF/templates/"/>

                        <!--视图后缀-->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

在请求控制器中定义请求方法

@Controller
//@ComponentScan  开启注解扫描
public class HelloController {
    
    
    @RequestMapping(value = "/") //请求映射注解,当请求以/开头时,就会调用该方法
    public String index(){
        return "index";
    }
}

 配置tomcat启动

 

 启动成功!

跳转到指定页面

在index.html中添加超链接

<body>
    <h1>首页</h1>
    <a th:href="@{/target}"></a>
</body>

创建target.html

在控制器中添加方法

@RequestMapping("/target")
    public String toTarget(){
        return "target";
    }

启动tomcat:跳转成功,target.html在WEB_INF下面,无法通过重定向方式跳转,只能在内部进行请求转发跳转过去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值