springmvc小结(上)
1.springmvc的整体结构以及流程

①.前端控制器:只需要在web.xml文件中配置即可
作用:接受请求,处理响应结果,转发器,中央处理器
②.处理器映射器:根据请求的url找到相应的Handler
③.处理器适配器:调用处理器Handler/controller的方法
④.处理器Handler(Controller)后端控制器,接受用户请求的数据,调用业务方法处理请求
⑤.视图解析器ViewResolver:视图解析,把逻辑视图转换为真正的物理视图
⑥.视图View:把数据展现给用户
2.默认的注解

在不进行配置的的时候有默认配置的在此文件中,默认进行配置。
# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
3.<mvc:annotation-driven>
默认是:基于注解映射器和基于注解的适配器
支持类型转换ConversionService
@NumberFormat,DateTimeFormate
@Validdate,JSR303校验
@RequestBody,@ResponseBody
4.@RequestMapping
用来处理请求地址(URL)映射的注解,可以在类或者方法上面
如果在类上就代表所有的请求方法URL都必须有类上的URL地址作为父路径
属性:
①.value和path一样,指定请求的URL
method:指定请求的不同方式:GET,POST,PUT,DELETE....
②.指定请求和响应的MedlaType
consumes:指定请求内容格式:Content-Type=application/json
produces:指定响应内容格式:application/json;charset=UTF-8
③.
params:指定request中必须包含某些参数值,包含方法处理
handlers:指定request中必须包含指定的header,包含才能处理
同时还可以窄化请求映射:即把其写在类上面
@RequestMapping("/user")
public class user{
@RequestMapping("/login")
public String login(){
...
}
}
5.前端控制器url-pattern
前端控制器的配置:
①. * .扩展名,比如*.action,不会导致静态的资源文件被拦截的问题。但是不支持RESTFULL风格的编码 ②. / 支持RESTFull风格,但是会导致静态的资源文件被拦截 ③./* ,错误的方式,可以请求到Controller方法,但是跳转到JSP时会被拦截,JSP不能正常显示
②. / 支持RESTFull风格,但是会导致静态的资源文件被拦截
解决方法:
1.在项目总的web.xml文件
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern> *.jsp</url-pattern>
<servlet-mapping> ...
jsp
png
2.使用mvc中的标签
在springmvc.xml文件中
<!--处理默认的静态资源的文件请求 -->
<mvc:default-servlet-handler/>
3.资源映射
<!--资源映射 -->
<mvc:resources location="" mapping=“” />
6.请求和响应

1.响应处理:
①.返回为void
@RequestMapping("/test1")
public void test1(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{
//请求转发
req.getRequestDispatcher("").forward(req, resp);
//请求的重定向
resp.sendRedirect("");
//设置共享数据
req.setAttribute("", "");
//输出json
resp.setContentType("text/json;charset=utf-8");
resp.getWriter().append("");
}
//返回为void文件下载
@RequestMapping("/test2")
public void test2(OutputStream out) throws IOException{
Files.copy(Paths.get("D:/Photo/bg.jpg"), out);
}
②.返回ModelAndView
@RequestMapping("/test3")
public ModelAndView test3(){
ModelAndView mv = new ModelAndView();
mv.setViewName("/WEB-INF/views/test.jsp");
//设置共享的数据的key和value
mv.addObject("msg", "test3....");
//设置共享数据的value,此时会把value类型的首字母小写作为key key=string
mv.addObject("只有值的共享数据");
return mv;
}
③.返回String
//返回String
//需要结合Model进行结合使用
@RequestMapping("/test4")
public String test4(Model model){ model.addAttribute("msg", "return string"); return "test";
}
2.请求跳转
①.请求转发
//请求转发
//浏览器的地址不变还可以共享数据
@RequestMapping("/test5")
public String test5(Model model){ model.addAttribute("msg", "请求转发"); return "forward:/index.jsp";
}
②.URL重定向
地址栏改变,数据不能共享
//重定向
@RequestMapping("/test6")
public String test6(Model model){ model.addAttribute("msg", "请求重定向"); return "redirect:/index.jsp";
}

note: Flash属性,只能使用从contrlooer 重定向到controller,不能到jsp
3.请求参数处理
①.数组
//数组的形式
//接受一个参数有多个值得情况
@RequestMapping("/test4")
public void test4(Long [] ids){
System.out.println(Arrays.asList(ids));
}
②.pojo
@RequestMapping("/test4")
public void test4(User user){
System.out.println(Arrays.asList(user));
}
springmvc小结(上)的更多相关文章
- SpringMVC文件上传实现
SpringMVC(注解)上传文件需要注意的几个地方:1.form的enctype="multipart/form-data",这个是上传文件必须的2.applicationCon ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- 【SpringMVC】使用SpringMVC进行上传文件!
写在前面: 之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大 ...
- springmvc图片上传(兼容ie8以上,实时预览)
html代码: <form id="uploadform" method="post" enctype="multipart/form-data ...
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- 利用springMVC包装类上传多个文件
前端JSP页面代码片段: <!-- springMVC包装类上传文件 --><form name="uploadFiles" id="uploadFil ...
- springMVC文件上传大小超过限制的问题
[转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...
- 解决springMVC文件上传报错: The current request is not a multipart request
转自:https://blog.csdn.net/HaHa_Sir/article/details/79131607 解决springMVC文件上传报错: The current request is ...
- 基于SpringMVC的上传文件实现
基于SpringMVC的上传文件实现 1.项目源码 源码地址:upload 2.关键代码 @RequestMapping("/upload2") public void datal ...
- SpringMVC 之 上传文件
一.需求: 利用SpringMVC实现上传文件的功能 二.思路: 1.我们可以在SpringMVC中,通过配置一个MultipartResolver来上传文件. 2.通过MultipartFile f ...
随机推荐
- 快速清除SQL2008日志文件
USE [master] --把数据库调整为简单模式 GO ALTER DATABASE krisvision SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DA ...
- vuex 实现vue中多个组件之间数据同步以及数据共享。
http://pan.baidu.com/s/1hrJfpli demo下载地址 前言 在一些项目中有很多数据状态之间要实现数据共享状态共享,例如购物车的数据.用户的登录状态等等.vue父元素是可以 ...
- Asp.Net MVC4通过id更新表单
用户需求是:一个表单一旦创建完,其中大部分的字段便不可再编辑.只能编辑其中部分字段. 而不可编辑是通过对input输入框设置disabled属性实现的,那么这时候直接向数据库中submit表单中的内容 ...
- Winform DataGridView列的单元格中动态添加图片和文字
先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs using System; using Syst ...
- ORA-12541:TNS-12560:ORA-12518:ORA-28040:ORA-01017
说明 环境(参考): Oracle 12c SQL Developer/Navicat Premium(64位)连接数据库 后续出现的错误代码: ORA-12541: no listener TNS- ...
- 8、springboot之定时任务
@Configuration @EnableScheduling public class SchedulingConfig { @Scheduled(cron = "0/5 * * * * ...
- IntelliJ IDEA 16创建Web项目
首先要理解一个概念:在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace),而“new Module”相当于eclipse中的工程(Projec ...
- SPOJ QTREE6
题意 给你一棵\(n\)个点的树,编号\(1\)~\(n\).每个点可以是黑色,可以是白色.初始时所有点都是黑色.有两种操作 \(0\ u\):询问有多少个节点\(v\)满足路径\(u\)到\(v\) ...
- 【Android】11.0 UI开发(二)——列表控件ListView的简单实现1
************************ 转载请注明出处:https://www.cnblogs.com/xiaofu007/p/10342462.html ***************** ...
- 十、一行多个:使用float布局的经典方法 ---接(一)
1.使用float必须要清除float:即在使用float元素的父级元素上清除float. 清除float的方法有三种,在父元素上加:1.width: 100% 或者固定宽度 +overflow:hi ...