0
点赞
收藏
分享

微信扫一扫

Python启动多个Appium Services

素锦时年_1b00 04-15 23:00 阅读 2

 1.快速体验使用MVC响应数据

  1. 在Maven项目中新建模块并转换成Web项目

  2. 导入依赖

    <properties>
        <spring.version>6.0.6</spring.version>
        <servlet.api>9.1.0</servlet.api>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <dependencies>
        <!-- springioc相关依赖  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
        <!-- web相关依赖  -->
        <!-- 在 pom.xml 中引入 Jakarta EE Web API 的依赖 -->
        <!--
            在 Spring Web MVC 6 中,Servlet API 迁移到了 Jakarta EE API,
    因此在配置 DispatcherServlet 时需要使用Jakarta EE 提供的相应类库和命名空间。
        -->
        <dependency>
            <groupId>jakarta.platform</groupId>
            <artifactId>jakarta.jakartaee-web-api</artifactId>
            <version>${servlet.api}</version>
            <scope>provided</scope>
        </dependency>
    
        <!-- springwebmvc相关依赖  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
  3. 创建Controller类

    @Controller
    public class HelloController {
        @RequestMapping("springmvc/hello") //对外访问的地址 到handlerMapping注册的注解
        @ResponseBody  //直接返回字符串给前端,不要找视图解析器!!!
        public String hello(){
            System.out.println("HelloController.hello");
            //返回给前端
            return "hello springmvc!!";
        }
    }
  4. Spring MVC核心组件配置类

    @Configuration
    @ComponentScan("com.example")
    public class MvcConfig {
        //@Bean方式配置handlerMapper和handlerAdapter
        @Bean
        public RequestMappingHandlerMapping handlerMapping(){
           return  new RequestMappingHandlerMapping();
        }
        @Bean
        public RequestMappingHandlerAdapter handlerAdapter(){
            return  new RequestMappingHandlerAdapter();
        }
    }
  5. SpringMVC环境搭建

    /**
     * description: 可以被web项目加载,会初始化ioc容器,会设置dispatcherServlet的地址
     * @author UserName
     */
    public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        // service mapper层的ioc容器的配置
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[0];
        }
        
        // 设置我们项目对应的配置 springmvc controller
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[]{MvcConfig.class};
        }
    
        // 配置springmvc内部自带servlet 的访问地址 !
        @Override
        protected String[] getServletMappings() {
            return new String[]{ "/"};
        }
    }
  6. 运行测试

        

 2.返回JSON数据

        2.1 导入jackson依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.0</version>
</dependency>

        2.2 MvcConfig添加json数据转化器@EnableWebMvc注解

        2.3 使用@RestController注解

         2.4 返回User对象和对象集合

@Data
public class User {
    private String name;
    private int age;
}


@RequestMapping("json")
//@Controller
//@ResponseBody //返回json的注解。添加到类和方法上!
@RestController  // @Controller + @ResponseBody
public class JsonController {
    /**
     * TODO: @ResponseBody 数据直接放入响应体返回! 也不会在走视图解析器
     *       快速查找视图, 转发和重定向都不生效了!
     */
    @GetMapping("data")
    public User data(){
        // 对象 -》json -> {}
        // 集合 -》json -> []
        User user = new User();
        user.setName("two dogs!");
        user.setAge(3);
        return user; // user-> handlerAdapter -> json -》 @ResponseBody -> json直接返回 【前后端分离模式】
    }

    @GetMapping("data2")
    public List<User> data1(){
        User user = new User();
        user.setName("two dogs!");
        user.setAge(3);

        List<User> users = new ArrayList<>();
        users.add(user);
        return users;
    }

}
测试

 3.页快速返回模板视图

        1.导入依赖
<!-- jsp需要依赖! jstl-->
<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>3.0.0</version>
</dependency>
        2.web//WEB-INF/views目录下创建jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<!-- request.setAttribute("data","hello jsp!!");
          vue  {{key}}
     -->
<span style="color: red; ">${data}</span>
</body>
</html>
        3.配置jsp视图解析器
@Configuration
@ComponentScan("com.example")
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //registry可以快速添加前后缀
        registry.jsp("/WEB-INF/views/",".jsp");
    }
}
        4.handler返回视图
package com.example.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * @author ChenXing
 * 2024/4/6 13:52
 * describe:
 */
@Controller
@RequestMapping(value = "/jsp")
public class JspController {
    /**
     * TODO:快速查找试图
     *    1. 方法的返回值是字符串类型
     *    2. 不能添加@ResponseBody
     *    3. 返回值 对应中间的视图名称即可  /springmvc/jsp/index
     */
    @GetMapping("index")
    public String index(HttpServletRequest request){
        request.setAttribute("data","hello jsp!!!");
        System.out.println("JspController.index");
        return "index";
    }

}
测试:

 

4.转发和重定向

在 Spring MVC 中,可以使用 redirect 或者 forward 关键字来实现重定向和转发。
@Controller
@RequestMapping(value = "/jsp")
public class JspController {
    /**
     * 转发:只能是项目下的资源
     *   1.方法的返回值写成字符串
     *   2.不能添加responseBody注解
     *   3.返回的字符串前 forward: /转发地址
     */
    @GetMapping(value = "forward")
    public String forward(){
        System.out.println("JspController.forward");
        return "forward:/jsp/index";
    }

    /*
      重定向:
        1.方法返回值写成字符串类型
        2.不能添加responseBody注解
        3.返回字符串前面 redirect: /重定向的地址
     */

    /** 路径细节:【不使用springmvc request response】
     *     转发是项目下的资源跳转。路径: 项目下的地址  /jsp/index 忽略 applicationContext
     *     重定向项目下的资源可以是项目外的地址  重定向属于二次请求  路径: 项目下的地址 全地址 /springmvc/jsp/index  不忽略 applicationContext
     *  使用springmvc路径语法:
     *     "forward: 路径 | redirect: 路径 "  重定向,资源的地址也不需要写项目的根路径! /jsp/index
     *     转发和重定向的地址都一样了!  /springmvc/jsp/index - >  /springmvc/springmvc/jsp/index
     */
    @GetMapping("redirect")
    public String redirect(){
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }

    @GetMapping("redirect/baidu")
    public String redirectBaidu(){
        System.out.println("JspController.redirectBaidu");
        return "redirect:http://www.baidu.com";
    }
}
测试:

redirect直接转到了index.jsp

 5.返回静态资源

资源本身已经是可以直接拿到浏览器上使用的程度了,**不需要在服务器端做任何运算、处理**。典型的静态资源包括:

纯HTML文件、图片、CSS文件、JavaScript文件......

       1. 在MvcConfig配置类中开启静态资源查找
@Configuration
@ComponentScan("com.example")
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //registry可以快速添加前后缀
        registry.jsp("/WEB-INF/views/",".jsp");
    }
    //开启静态资源查找
    // dispatcherServlet -> handlerMapping找有没有对应的handler -》【 没有 -》 找有没有静态资源 】
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}
        2.前端直接访问静态资源:

 

举报

相关推荐

0 条评论