SpringMVC基础知识汇总
今天有个非常重要的事耽搁了一会,但这并不影响我继续更新博文,其实换种思考方式,有的时候根本不是人去养成好习惯,而是一些好习惯在养成人.这是不争的事实,一个好的习惯,不仅可以提升一个人自我思考能力,还可以提升个人对事情的见解,你的见解比别人深,你做起事来才会比别人快.
那么今天来总结分享一下,SpringMVC的基础知识,我个人见解并不是很深,我会尽我所能将我学过的知识一一汇聚出来,感谢各位理解和认可.
1.SpringMVC中的重要组件
1:dispatcherServlet:
前端控制器,接受所有的请求.
2:HandlerMapping:
解析请求格式的,判断希望要执行哪个具体方法.
3:HandlerAdapter:
负责调用具体方法
4:ViewResovler:
视图解析器,解析结果,准备跳转到具体的物理视图.
2.SpringMVC运行原理图
3.SpringMVC环境搭建
1:导入所需jar包
2:在web.xml文件中配置前端控制器DispacterServlet
springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml springmvc /
3:在src下创建springmvc.xml文件
4:编写控制类
@Controller//表示该类为控制器类public class DemoController { //设置该方法的请求地址 @RequestMapping("demo") public String demo(){ System.out.println("执行了Demo方法"); return "main.jsp"; }}
4.传参
1:把内容写到方法参数中
2:基本数据类型传参,默认保证参数名称和请求中传递的参数名相同
@RequestMapping("demo2")public String demo2(String username,String password){ System.out.println(username+"==="+password); return "main.jsp";}
3:如果请求参数和方法参数名不对应使用@RequestParam()赋值
@RequestMapping("demo2")public String demo2(String username,@RequestParam(value = "pwd") String password){ System.out.println(username+"==="+password); return "main.jsp";}
4:如果请求参数中包含中文则会出现乱码
在web.xml中配置filter--字符编码过滤器
encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encoding /*
5:给参数设置默认值
如果你的方法参数是基本数据类型(不是封装类)可以通过:@RequestParam()设置默认值
6:参数是对象类型
请求参数名和对象中属性名对应
@RequestMapping("demo4")public String demo4(Student stu){ System.out.println(stu); return "main.jsp";}
5.Restful传值
1:简化jsp中参数编码格式
2:在jsp中设置特定的格式
传值方式restful
3:在控制器类中
在@RequestMapping中一定要有请求格式对应的
{名称}中的名称可以自定义
@PathVarible获取@RequestMapping中内容,默认按照方法的参数名去寻找
@RequestMapping("demo3/{name1}/{age1}") public String demo3(@PathVariable("name1") String name, @PathVariable("age1") int age){ System.out.println(name+" "+age); //"/"表示根目录 return "/main.jsp"; }
6.跳转方式
1:默认跳转方式是请求转发
2:设置返回值字符串内容
添加forward:资源途径,或者省略forward:转发
添加redirect:资源路径,重定向
7.视图解析器
1:SpringMVC会默认提供视图解析器
2:程序员自定义视图解析器
3:如果希望不执行自定义的解析器,在方法返回值前面添加forward或redirect
8.文件上传
1:基于apache的commons-fileupload.jar完成的文件上传
2:MultipartResolver的作用:
把客户端上传的文件流转换成MultipartFile封装类
通过MultipartFile封装类获取文件流
3:表单数据类型分类
在的enctype属性控制表单类型
默认值application/x-www-form-urlencoded,普通表单数据(少量的文字信息)
text/plain大量文字时使用的类型,邮件,论文
multipart/form-data表单中包含二进制文件内容
4:编写jsp页面
5:配置springmvc.xml
/error.jsp
6:编写controller控制器类
@Controllerpublic class uploadController{ @RequestMapping("upload") public String upload(){ //获取文件名 String filename=file.getOriginalFilename(); //文件上传 FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/"+filename)); return "index.jsp"; }}
9.文件下载
1:访问资源时响应头如果没有设置Content-Disopsition,浏览器默认按照inline值进行处理
inline:能显示就显示,不能显示就下载
2:只需要修改响应头中的Context-Disposition="attachment;filename=文件名"
attachment下载,以附件形式下载
filename=值就是要下载的显示文件名
下载
3:编写Controller
@RequestMapping("download") public void download(String filename, HttpServletResponse resp, HttpServletRequest req)throws IOException{ //设置响应流中的文件 resp.setHeader("Content-Disposition","attachment;filename="+filename); //把二进制流放入到响应体中 ServletOutputStream os = resp.getOutputStream(); //设置文件的地址 String path = req.getServletContext().getRealPath("file"); File file = new File(path,filename); byte[] bytes = FileUtils.readFileToByteArray(file); os.write(bytes);os.flush(); os.close(); }
到此,SpringMVC基础知识点,就跟大家分享完毕,如果有哪里不足或者有更好的建议欢迎留言吐槽,如果有哪里不懂可以私信博主,博主将一一解答,感谢认可.我们明天见!