springMVC使用方式

1、配置dispatcherServlet
在这里插入图片描述
ModelAndView
在这里插入图片描述
servlet配置
在这里插入图片描述
在这里插入图片描述
默认命名为:(servlet-name)-servlet.xml

在这里插入图片描述
默认根据name属性,找到controller
也就相当于手动配置了
在这里插入图片描述

当配置其他的handleMapping时,会覆盖这个默认的BeanNameUrlHandlerMapping

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当使用
在这里插入图片描述
项目名为springmvc-1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
key为访问路径,尖括号之间的内容,为引用的controller的id
这样做,bean只管创建bean,不负责映射

在这里插入图片描述

在这里插入图片描述
此时,由于显示配置的生效
在这里插入图片描述
,默认的HandlerMapping还没有被覆盖
在这里插入图片描述
在这里插入图片描述
当不配置此HandlerMapping时
在这里插入图片描述
此时,在这里插入图片描述

在这里插入图片描述

controller的首字母小写,但是当名字一样的时候,无法区分
在这里插入图片描述

控制器

参数控制器
相当于一个中转站,直接跳转到页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
object obj用于接收实体类的参数
在这里插入图片描述
在这里插入图片描述
也就是controller中obj
当访问时:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每次都创建出一个新对象
重写tostring方法,查看对象中的值
在这里插入图片描述
在这里插入图片描述
没有值,采用的是默认构造器
传参:
在这里插入图片描述
在这里插入图片描述
怎么赋值的呢?
通过反射,调用了该实体类的set方法
在这里插入图片描述

表单控制器:

formview,为表单页面,也就是传参页面,seccessview为成功后,返回的页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动匹配提交方法
页面中,定义使用post方式提交表单,如果直接访问bean的name路径,即用get方式:
在这里插入图片描述
跳转到定义的formview定义的页面中,也就是这里的表单页面
在这里插入图片描述

如果在表单页面,直接定义提交方式为get
在这里插入图片描述
在这里插入图片描述
又跳转到表单页面,提交不过去
在这里插入图片描述
自动匹配参数类型
id为int类型,当填入字符串时

在这里插入图片描述
跳转回此页面
在这里插入图片描述
对于日期的处理:
实体类新加属性:
在这里插入图片描述
在这里插入图片描述
如果填写:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果:
在这里插入图片描述
失败返回
在这里插入图片描述
如果要自定义类型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是刚才使用“/”的方式提交,会失败

注解驱动

只需要扫描和视图解析器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
为什么呢?
在这里插入图片描述
扫描器扫描的注解:
在这里插入图片描述
在这里插入图片描述
访问成功!

在这里插入图片描述

可以直接接受变量名,两种方式,后者底层走的是前者的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接受数组:
在这里插入图片描述
接收到String类型数组
在这里插入图片描述
先进入到form界面:
在这里插入图片描述
接收到Integer类型
在这里插入图片描述
成功!

一般不用Integer类型
在这里插入图片描述
得到字符串
在这里插入图片描述
底层是根据request中传入的name来匹配的,name不能写错,错误示例:
在这里插入图片描述
报错:500

在这里插入图片描述
可以传入对象,名称可以不匹配。
在这里插入图片描述
在这里插入图片描述
那么,定义的controller是单例还是多例?

在controller中创建一个构造方法,里面标记好一句话
在这里插入图片描述
这句话只打印一次,所以是单例的。

对返回值进行封装:
在这里插入图片描述
map底层调用的就是request.setattribute方法
在这里插入图片描述

对上述方法改进:
在这里插入图片描述
传入的参数中,map相当于上一个方法中ModelAndView中的map,实际是个返回值(传出值)

在这里插入图片描述
继续改进:
使用Model,也就是ModelAndView中的Model, 实际底层用的还是map
在这里插入图片描述
在这里插入图片描述
传入方法的控制:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ajax

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
redirect:
跳转到同一个类中的方法上,不用加类上的RequestMapping
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
尝试加上类上的RequestMapping

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件上传:
在这里插入图片描述
需要在SpringMVC配置文件中加上复杂类型的解析器

在这里插入图片描述

在这里插入图片描述

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

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

拦截器:

实现HandlerInterceptor
在这里插入图片描述
在这里插入图片描述

arg2表示当前拦截器拦截到的controller的实例,前置拦截,一般做权限校验
在这里插入图片描述
后置拦截:

在这里插入图片描述
最终拦截:页面已经生成出来
一般起监控作用,或者捕捉异常
在这里插入图片描述
使用拦截器,需要在SpringMVC配置文件中配置拦截器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Autowired属于spring的注解
在这里插入图片描述

Resource数据jdk的注解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring MVC中,可以使用注解方式来实现图片上传功能。首先,需要在Controller类中添加一个处理上传图片的方法,并使用@RequestMapping注解指定该方法的URL路径。例如,可以使用@RequestMapping("/uploadImage")来指定上传图片的URL路径。在该方法中,可以使用HttpServletRequest对象获取上传的图片文件,并使用自定义的类(例如UploadedImageFile)来封装上传的图片文件。同时,该方法需要抛出IllegalStateException和IOException异常,以处理可能出现的异常情况。具体的代码示例如下: ```java @RequestMapping("/uploadImage") public ModelAndView upload(HttpServletRequest request, UploadedImageFile file) throws IllegalStateException, IOException { // 处理上传图片的逻辑 // 采用随机数来命名图片,防止上传文件名相同的文件会覆盖原文件 // ... return new ModelAndView("uploadSuccess"); } ``` 另外,需要在Spring MVC的配置文件中配置MultipartResolver,以支持文件上传功能。Spring MVC提供了一个即插即用的MultipartResolver实现类:CommonsMultipartResolver,它使用了Jakarta Commons FileUpload技术来实现文件上传功能。默认情况下,Spring MVC上下文中没有配置MultipartResolver,因此需要手动配置MultipartResolver。可以在Spring MVC的配置文件中添加如下配置: ```xml <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 配置文件上传的最大大小 --> <property name="maxUploadSize" value="10485760" /> </bean> ``` 以上就是使用注解方式在Spring MVC中实现图片上传的方法。通过配置MultipartResolver和编写处理上传图片的方法,就可以实现图片上传的功能了。 #### 引用[.reference_title] - *1* *2* [SpringMVC注解方式与文件上传](https://blog.csdn.net/weixin_34579167/article/details/114423045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringMVC基于注解使用:上传和下载](https://blog.csdn.net/weixin_53058174/article/details/127824112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值