SpringMVC总结

本文详细介绍了SpringMVC的架构原理,包括模型(dao, service)、视图(jsp)、控制器(Servlet)的关系,以及DispatcherServlet的作用。内容涵盖jsp的本质、安全性的实现,重定向的使用,前端数据接收及对象绑定,乱码处理,`@ResponseBody`和`@RestController`的使用场景,ajax交互,拦截器配置,以及文件上传的相关知识。" 103972153,7495249,Spark RDD操作详解:转换与行动算子,"['大数据开发', 'Spark框架', '分布式计算']

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

MVC

  1. web.xml
  2. resources中的创的xml
  3. 在java中创建包
  4. 在包中创建相对应的controller

1:模型(dao,service),视图(jsp),控制器(Servlet)底层就是servlet

2.jsp:本质就是一个Servlet

3.为了安全,用户不可见就把jsp放在WEB-INF下面

可见则直接放在web下面
在这里插入图片描述

4.DispatcherServlet

在这里插入图片描述

5.SpringMVC原理图

请添加图片描述

6.重定向:

视图解析器对重定向不起作用,即没有下段代码也可以
注意:1.记得注意index.jsp前面的斜线/
2.重定向不走视图解析器

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
return "redirect:/index.jsp"; 
//记得注意index.jsp前面的斜线/
       //重定向不走视图解析器

重定向不能直接访问WEB-INF文件夹的文件

7.接收前端传的数据

项目列表:
请添加图片描述
创建controller包:创建一个UserController

package controller;

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

@Controller
@RequestMapping("/u1")
public class UserController {

    //localhost:8080/user/t1?name=xxx;
    @GetMapping("/t1")
public String test1(String name, Model model){
        //1.接收前端参数  通过String name就能接收了
        System.out.println("接收到前端的参数:"+name);
        //2.将返回的结果传递给前端    用Model   还有其他方法
        model.addAttribute("msg",name);
        //3.视图跳转
    return "test";
}
}					

创建一个pojo包:创建一个user

package pojo;

public class User {
    private int id;
    private String name;
    private  int age;


    public User() {
    }

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

启动tomcat,浏览器输入:http://localhost:8080/springmvc4_controller/u1/t1?name=abc即显示出abc

8.如果将UserController中的代码修改为:

public String test1(@RequestParam("username") String name, Model model)

则浏览器输入:http://localhost:8080/springmvc4_controller/u1/t1?username=abc即显示出abc

9.接收前端的对象

@GetMapping("/t2")
    public String test2(User user){
    System.out.println(user);
        return "test";
}

http://localhost:8080/springmvc4_controller/u1/t2?id=4&name=abc&age=10
结果:User{id=4, name=‘abc’, age=10}

http://localhost:8080/springmvc4_controller/u1/t2?id=4&username=abc&age=10
结果:User{id=4, name=null, age=10}

10.乱码 过滤器filter

  1. 自己配置:
 <filter>
        <filter-name>encoding</filter-name>
        <filter-class>filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/* </url-pattern>
    </filter-mapping>

 <url-pattern>/* </url-pattern>
 与
  <url-pattern>/ </url-pattern>
  的区别

/*要过滤jsp
/不过滤jsp

  1. springmvc的配置:
<filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

json

请添加图片描述
导包

<dependencies>
<!-- https: / /mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> 
   <dependency>
<groupId>com.fasterxm1.jackson.core</ groupId>
<artifactId>jackson-databind< / artifactId>
<version>2.10.e</version>
   </ dependency>
</ dependencies>

乱码问题

< ! --JSON乱码河题配置-->
<mvc : annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>

<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
      <property name="objectMapper">
         <bean class="org.springframework.http.converter.json.Jackson20bjectMapperFactoryBean">
             <property name="fail0nEmptyBeans" value="false"/>
         < / bean>
        </property>
< / bean>
</ mvc:message-converters>
</mvc :annotation-driven>

11.`@ResponseBody

//添加这个注解后,它就不会走视图解析器了,会直接返回一个字符串`
配合@Controller使用的

12.@RestController

//不经过视图解析器,返回一个字符串`

13.ajax

必须在resources中的xml中,web.xml中添加静态资源过滤,只有加了,之后导入的jquery才会加载

<mvc:default-servlet-handler/>

js:函数 ,闭包()()

14.拦截器

mvc特有的
配置:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="config.MyInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
</beans>

请添加图片描述
可用于不登录不能进入主页

15.文件上传

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值