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 ...
随机推荐
- EveryThing 使用方法
1.按照时间范围:datetimed: <*.doc|*.docx> dm:1/2015-6/2015// 如果本地的时间设置是年份在前,那么把年份放在月份前面// d: <*.d ...
- Azure 上 Linux 虚拟机 Mac 地址的持久化
有些用户在使用 Azure Linux 虚拟机安装软件时,有些软件的 license 会和当前系统的 mac 地址绑定,那么在 Azure VM 重启,reszie(改变尺寸大小),停止然后再启动的时 ...
- nodejs中引入art-template模板
使用Webstorm创建nodejs express应用时,默认使用的是jade或者ejs模板,对于不习惯这两种模板语法的人来说确实不是很方便.没关系,这里我们使用art-template模板引擎,使 ...
- 十一、cent OS下搭建SVN服务器
安装SVN命令:yum install subversion 查看安装位置:rpm -ql subversion,我们看到它在/usr/bin目录下生成了svn的二进制文件 查看svn版本:/usr/ ...
- Java CAS总结
文章目录 1. CPU指令对CAS的支持(CPU的cas指令是原子的) 或许我们可能会有这样的疑问,假设存在多个线程执行CAS操作并且CAS的步骤很多,有没有可能在判断V和E相同后,正要赋值时,切换了 ...
- 数组之reduce()和reduceRight()
1.reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值. reduce()可以传入两个参数,第一个是执行化简操作的函数.同样这个函数可以有参数,第一个参数代表 ...
- html和css入门 (三)
文本样式 color 文本颜色 属性名 color 属性值 预定义的颜色名 | 十六进制值的颜色值 | RGB颜色值 默认值 依赖用户代理 描述 设置文本的颜色 direction 文本方向( 属性名 ...
- Dockerfile定制镜像
一.Dockerfile是什么? 镜像定制实质就是定制每一层所添加的配置.文件. Dockerfile就是一个脚本来构建和定制镜像,把每一层的修改.安装.构建.操作都写入脚本.以此来解决体积.镜像构建 ...
- Hello Activemq
0. 如果永远是localhost 可能一直low下去 1.下载安装 activemq 1.1 从官网下载activemq.tar.gz 并上传(rz)到linux系统 并解压 tar zxvf /* ...
- jQuery实现18位身份证输入隔位添加空格及格式验证
说明:jQuery实现身份证输入添加空格,表单验证身份证输入,并且输入时前6位添加一个空格,中间8位后添加一个空格,及身份证格式验证 参考:基于jquery实现的银行卡号每隔4位自动插入空格的实现代码 ...