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 ...
随机推荐
- 微软的TransactionScope类是个好玩意
最近发现微软自带的TransactionScope(.Net Framework 2之后)是个好东东,提供的功能也很强大. 首先说说TransactionScope是什么,并能为我们做什么事情.其实看 ...
- spring-boot之简单定时任务
首先是pom.xml依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- 监听域对象创建和销毁的Listener
1.什么是Servlet监听器? 先来看看什么是监听器.监听器是专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时立即采取相应的行动.Servlet监听器是S ...
- Codis3.2 安装部署
转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html 一.软件下载 下载 下载 zookeeper (Codis注册中心) http://m ...
- csharp:DropDownComboxTreeView
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using Syste ...
- response.setHeader()下载的用法
1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connecti ...
- Windows API 编程----EnumWindows()函数的用法
1. 函数原型: BOOL WINAPI EnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam); lpEnumFunc: 应用程序 ...
- GeoJSON相关操作
简介 本文主要介绍GEOJSON相关的操作 环境 gt-geojson-.jar,jts-1.8.jar 直接上代码 代码 wkt格式的geometry转成json格式 public String e ...
- mianxiangduixiang
package com.hanqi; public class mianxiang { public static void main(String[]args) { Cat c1 =new Cat( ...
- Android 查看和管理sqlite数据库
在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库位于/data/data/项目包/databas ...