SpringMVC 的学习冒险之旅_内及其子包内的所有“类”(不包含接口),并为添加

最后

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

DispatcherServlet是前置控制器,配置在 web.xml 文件当中的,拦截匹配的请求,Servlet 拦截匹配规则要自己定义,将拦截下来的请求按照相应的规则分发到目标 Controller 来处理,是配置spring MVC的第一步。

/

看官方文档可知,如果我们的项目中配置了"/",会覆盖掉 tomcat 中的默认 servlet,当其他的 url-pattern 匹配不上时都会走这个 servlet。意思就是说,页面来的所有请求都会走这个 servlet,也就是 DispatcherServlet。

springMVC.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-4.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
	">

<!--    spring注解-->
<!--    作用:扫描包内及其子包内的所有“类”(不包含接口),并为添加了@Service、@Component、@Controller、@Repository修饰的类创建对象并存入IOC容器-->
<!--    @Service、@Component、@Controller、@Repository修饰的类中含有@Autowired修饰的成员变量,则创建对象时会从IOC容器中取值为该成员变量赋值-->
    <context:component-scan base-package="com.itxzw">
        <context:exclude-filter type="regex" expression="com.itxzw.util"/>
    </context:component-scan>

    <!--SpringMVC相关配置-->
    <!--视图解析器,他的作用是在Controller返回的时候进行解析视图-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".html" />
    </bean>

    <!--启动SpringMVC注解-->
<!--    主要用于spring mvc 中的annotation注解功能,作用是帮我们注入一些内置bean,例如RequestMappingHandlerMapping
        和 RequestMappingHandlerAdapter等,这些类是Aware的子类,能完成特定的供能,例如:
        RequestMappingHandlerMapping负责解析@RequestMapping("/helloworld")注解。
        主要是解析spring mvc的一些标签和语法!
-->
    <mvc:annotation-driven />
    <mvc:default-servlet-handler/>
</beans>

context:component-scan

**作用:**扫描包内及其子包内的所有“类”(不包含接口),并为添加了@Service、@Component、@Controller、@Repository修饰的类创建对象并存入IOC容器,@Service、@Component、@Controller、@Repository修饰的类中含有@Autowired修饰的成员变量,则创建对象时会从IOC容器中取值为该成员变量赋值

context:include-filter

排除类,排除不需要扫描的类

InternalResourceViewResolver

视图解析器,他的作用是在Controller返回的时候进行解析视图

mvc:annotation-driven

主要用于 spring mvc 中的 annotation 注解功能,作用是帮我们注入一些内置 bean,例如RequestMappingHandlerMapping 和 RequestMappingHandlerAdapter 等,这些类是 Aware 的子类,能完成特定的供能,例如:RequestMappingHandlerMapping 负责解析@RequestMapping(“/helloworld”)注解。主要是解析spring mvc的一些标签和语法。

mvc:default-servlet-handler/

我们在配置 dispatchServlet 时配置/拦截所有请求,这时候dispatchServlet完全取代了default servlet,将不会再访问容器中原始默认的servlet,而对静态资源的访问就是通过容器默认servlet处理的,故而这时候静态资源将不可访问。
换句话说我们用了 这个 /, html就文件访问不了了,如果想要解决访问静态资源问题,就要加上mvc:default-servlet-handler/

自定义处理器

// @Controller 是Spring框架提供的注解。
// @Controller标识的类,该类代表控制器类(控制层/表现层)。
// 这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层),
@Controller
// 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置
@RequestMapping("/user")
public class UserAction {

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

@Controller

是Spring框架提供的注解。@Controller标识的类,该类代表控制器类(控制层/表现层)。 这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层)。

@RequestMapping

在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置。可以理解为访问路径。

userText.html 前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>

<p>我是测试1</p>
<p>我是测试2</p>

</body>
</html>

项目名

day09_SpringMvc01

测试地址

http://localhost:8080/day09_SpringMvc01/user/userText

三、有参数的传递

自定义处理器

    @RequestMapping(value = "/test02")
    public String test02(User user){
        System.out.println(user);
        return "userList";
    }

User 实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {

    private String username;
    private String password;
    private int age;
    private String gender;
    private String[] hobby;

}

index.jsp 请求页面

<html>
<body>

<form action="/day09_SpringMvc01/user/test02" method="post">
    姓名:<input type="text" name="username" /> <br>
    密码:<input type="text" name="password" /><br>
    产品名称:<input type="text" name="proname" /><br>
    爱好:唱<input type="checkbox" name="hobby" value="sing">
    跳<input type="checkbox" name="hobby" value="dance">
    rap<input type="checkbox" name="hobby" value="rap">
    篮球<input type="checkbox" name="hobby" value="basketball">
    <br>
    <input type="submit" value="登录">
</form>

</body>
</html>

测试

效果

如果想让结果显示在另外一个页面上呢?

✅index.jsp 前端页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>

<form action="/day09_SpringMvc01/user/test03" method="post">
    姓名:<input type="text" name="username" /> <br>
    密码:<input type="text" name="password" /><br>
    产品名称:<input type="text" name="proname" /><br>
    爱好:唱<input type="checkbox" name="hobby" value="sing">
    跳<input type="checkbox" name="hobby" value="dance">
    rap<input type="checkbox" name="hobby" value="rap">
    篮球<input type="checkbox" name="hobby" value="basketball">
    <br>
    <input type="submit" value="登录">
</form>

</body>
</html>

自定义处理器

    @RequestMapping("/test03")
    public ModelAndView test03(User user){

        ModelAndView mv = new ModelAndView();
        mv.addObject("user",user);
        mv.setViewName("userDetail");
        return mv;
    }

userDetail.jsp 接收页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <h1>用户详情页</h1>
    <h1>姓名:${user.username}</h1>
    <h1>密码:${user.password}</h1>
    <h1>爱好:${user.hobby}</h1>

</body>
</html>

测试

访问路径

http://localhost:8080/day09_SpringMvc01/index.jsp

效果

扩:@GetMapping 与 @PostMapping

首先要了解一下@RequestMapping注解。

@RequestMapping用于映射url到控制器类的一个特定处理程序方法。可用于方法或者类上面。也就是可以通过url找到对应的方法。

@RequestMapping有8个属性。

**value:**指定请求的实际地址。

**method:**指定请求的method类型(GET,POST,PUT,DELETE)等。

**consumes:**指定处理请求的提交内容类型(Context-Type)。

**produces:**指定返回的内容类型,还可以设置返回值的字符编码。

**params:**指定request中必须包含某些参数值,才让该方法处理。

**headers:**指定request中必须包含某些指定的header值,才让该方法处理请求。

最后

毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节

美团面试经验

美团面试
字节面试经验
字节面试
菜鸟面试经验
菜鸟面试
蚂蚁金服面试经验
蚂蚁金服
唯品会面试经验
唯品会

因篇幅有限,图文无法详细发出

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

g-BZdDnJV3-1715470141556)]
菜鸟面试经验
[外链图片转存中…(img-Qteb3hJc-1715470141556)]
蚂蚁金服面试经验
[外链图片转存中…(img-1LRquDHn-1715470141556)]
唯品会面试经验
[外链图片转存中…(img-diNz78bT-1715470141557)]

因篇幅有限,图文无法详细发出

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值