> 文档中心 > SpringMVC基础知识汇总

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基础知识点,就跟大家分享完毕,如果有哪里不足或者有更好的建议欢迎留言吐槽,如果有哪里不懂可以私信博主,博主将一一解答,感谢认可.我们明天见! 

神片云