博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC基础入门学习
阅读量:3943 次
发布时间:2019-05-24

本文共 6660 字,大约阅读时间需要 22 分钟。

SpringMVC基础入门学习

学习工具:JDK1.8 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

SpringTools(STS) https://spring.io/tools

tomcat8.5 https://tomcat.apache.org/

1、SpringMVC的第一个项目

  • 1.1 新建一个动态的Web项目

    image-20200229200252758.png

  • 1.2 导入SpringMVC所需的jar包

    image-20200229200357058.png

  • 1.3 配置Web.xml文件

    image-20200229200455385.png

  • 1.4 新建一个Demo类

    image-20200229200500561.png

  • 1.5 配置springmvc.xml文件

    image-20200229200604672.png

  • 1.6 将项目添加到tomcat中,并运行

    image-20200229200631805.png

2、给html界面传递数据

  • 2.1 分别用Model和Map来传递数据

    @GetMapping("/hello")public String helloWorld(Model model, Map
    map) {
    map.put("message", "map--->hello"); model.addAttribute("result", "model--->hello"); return "welcome";}
  • 2.2 在jsp页面拿到Controller传递过来的数据

    image-20200229200719940.png

  • 2.3 在浏览器中访问

    image-20200229201324657.png

3、调用一个Controller中不同的方法

@GetMapping("/add")	public String add(Model model) {
model.addAttribute("result", "调用的是add方法"); return "action"; } @GetMapping("/update") public String update(Model model) {
model.addAttribute("result", "调用的是update方法"); return "action"; }
  • 在浏览器中访问

    image-20200229203209617.png

    image-20200229203222321.png

4、获取请求路径中的值

@GetMapping("/user/{id}/{name}")	public String urlValue(@PathVariable("id") Integer id, @PathVariable("name") String name, Model model) {
model.addAttribute("message", "id: " + id + ", name: " + name); return "action"; }

在浏览器中访问

image-20200229203453987.png

5、访问静态资源

  • 5.1 在WebContent下新建一个resources文件夹,用来存放静态资源(js,css,image等)

    image.png

    • 再新建一个名为staticResources.jsp文件

      image.png


  • 5.2 新建一个Controller类

    @Controllerpublic class FindStaticController {
    @GetMapping("/static") public String findStaticResourse() {
    return "staticResources"; }}
  • 5.3 在springmvc.xml中添加如下配置:

  • 5.4 在浏览器中访问

    image.png

image.png

6、前端(jsp)参数传递到后端(Controller)

  • 6.1 在WebContent下新建一个addUser.jsp文件

    image.png

  • 6.2 新建一个DataController类

    @Controller@RequestMapping("/user")public class DataController {
    /** * 跳转到添加用户页面 * @return */ @GetMapping("/toUser") public String toUserPage() {
    return "addUser"; } /** * 添加用户 * @param username * @param age */ @PostMapping("/addUser") public void addUser(@RequestParam("username") String username, @RequestParam("age") Integer age) {
    System.out.println("用户名:" + username + " , 年龄:" + age); }}

    @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

    语法:@RequestParam(value=””, required=”true/false”, defaultValue=””)

    value:参数名

    required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错

    defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

  • 6.3 运行结果

    image.png

    • 解决中文乱码问题

    • 1、在web.xml中添加如下配置

      CharacterEncodingFilter
      org.springframework.web.filter.CharacterEncodingFilter
      encoding
      UTF-8
      CharacterEncodingFilter
      /*
    • 2、在 tomcat的 conf目录下的 server.xml中添加如下配置

      在63行左右加上URIEncoding="UTF-8"

      • 乱码问题解决

      image.png


  • 6.4 通过实体类获取数据

    • 6.4.1 在类路径下添加一个包,新建一个User实体类,并生成get()和set()方法

      image.png

    • 6.4.2 在Controller中做如下修改

      /*** 添加用户* @param username* @param age*/@PostMapping("/addUser")public void addUser(User user) {
      System.out.println("用户名:" + user.getUsername() + " , 年龄:" + user.getAge());}

      访问结果

      image.png


7、json传递数据()

  • 7.1 新建一个JsonController类

    @Controller@RequestMapping("/json")public class JsonController {
    @GetMapping("/toUser") public String toUserPage() {
    return "json"; } @PostMapping("/addUser") public void addUser(User user) {
    System.out.println("年龄:" + user.getUsername() + " , 姓名:" + user.getAge()); }}
  • 7.2 在WebContent下添加json.jsp页面

    image.png

  • 7.3 访问结果

    image.png
    image.png

    SpringMVC返回json格式的数据所需的jar包 :(版本自己任意,建议选新版本)

    1. jackson-core-2.10.2.jar
    2. jackson-annotations-2.10.2.jar
    3. jackson-databind-2.10.2.jar

    再在 springmvc.xml中添加如下配置 :


  • 7.4 获取Controller中的json数据
    • ,返回 Map与 List相似,对象也一样,这里不做详细介绍了。注意接收的变量名称即可。


8、文件上传

8.1 通过流的方式

  • 8.1.1 准备工作 :

    1. 添加一个 commons-fileupload-1.3.jar 包(版本自选)

    2. 在 springmvc.xml中添加如下配置

  • 8.1.2 新建一个 upload.jsp 文件,并在body标签中填写一个from表单

        

    文件上传:

    请选择文件:
  • 8.1.3 新建一个 UploadController类

    @Controllerpublic class UploadController {
    /** * 通过流的方式上传文件 * @param file * @return */ @PostMapping("/upload") public String upload(@RequestParam("files") MultipartFile file) {
    if (!file.isEmpty()) {
    try {
    // 获取文件的输入流 InputStream input = file.getInputStream(); // file.getOriginalFilename()获取到原始的文件名称 OutputStream out = new FileOutputStream("F:/" + file.getOriginalFilename()); byte[] bytes = new byte[1024]; int len = -1; while((len = input.read(bytes)) != -1) {
    out.write(bytes, 0, len); } out.close(); input.close(); } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) {
    // TODO: handle exception e.printStackTrace(); } } return "success"; }}
  • 8.1.4 运行项目访问

    image.png

    image.png

8.2 使用 transferTo() 方法

  • 8.2.1 在UploadController中重新写一个upload方法

    /*** 通过 transferTo()方法来上传文件* @return*/@PostMapping("/upload2")public String upload2(@RequestParam("files")CommonsMultipartFile file) {
    File multFile = new File("F:/" + file.getOriginalFilename()); try {
    file.transferTo(multFile); } catch (IllegalStateException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } return "success";}
  • 8.2.2 运行项目访问

    image.png

    image.png

    在MultipartFile接口中定义了如下很多有用的方法,例如:

    1. getSize()方法获得文件长度,以此决定允许上传的文件大小。
    2. isEmpty()方法判断上传文件是否为空文件,以此决定是否拒绝空文件。
    3. getInputStream()方法将文件读取为java.io.InputStream流对象。
    4. getContentType()方法获得文件类型,以此决定允许上传的文件类型。
    5. transferTo(dest)方法将上传文件写到服务器上指定的文件。

8.3 用 spring提供的上传文件的方法【推荐使用这种方法,效率比前两种更高】

  • 8.3.1 在UploadController中重新写一个upload方法

    /***用 spring提供的上传文件的方法* @param request* @return*/@PostMapping("/upload3")public String upload3(HttpServletRequest request) {
    // 将当前上下文初始化给 CommonsMultipartResolver(多部分解析器) CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); // 检查 form表单中是否有 enctype="multipart/form-data" if (multipartResolver.isMultipart(request)) {
    // 将 request变成多部分 request MultipartHttpServletRequest multRequest = (MultipartHttpServletRequest) request; // 获取 multRequest中所有的文件名 Iterator
    iter = multRequest.getFileNames(); while (iter.hasNext()) {
    // 一次遍历所有文件 MultipartFile file = multRequest.getFile(iter.next().toString()); if (file != null) {
    try {
    file.transferTo(new File("F:/" + file.getOriginalFilename())); } catch (IllegalStateException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
    // TODO Auto-generated catch block e.printStackTrace(); } } } } return "success";}
  • 8.3.2 运行项目访问

    image.png

    image.png

    持续更新中......

转载地址:http://oziwi.baihongyu.com/

你可能感兴趣的文章
Mac截图快捷键大全
查看>>
扩展Spring Security-用户密码自定义加密的快速实现
查看>>
Log4j异步日志简明配制
查看>>
扩展Spring Security-国际化终极配制
查看>>
在Mac OS系统下得Linux虚拟机中安装Confluence3
查看>>
在Eclipse中调试Jetty应用的配置(XML配置文件方式)
查看>>
Ext-3.1.0下组件中按钮居中问题的记要
查看>>
MacOS下使用screen命令运行后台程序
查看>>
东北人的幽默,《红男绿女》中经典对白,看过的人都明白
查看>>
印象后海
查看>>
看了这54句,你就看懂了人性
查看>>
PowerDesigner数据模型设计拾遗
查看>>
从Spring MVC扩展中学习OO设计(一)
查看>>
八招赚钱方法
查看>>
70个面试技巧,很实用哦
查看>>
Communication - The cardigans
查看>>
晒书名:已收藏O'Reilly出版社‘动物世界’系列图书(一)
查看>>
晒书名:已收藏O'Reilly出版社‘动物世界’系列图书(二)
查看>>
从银行WebService报文接口系统中,学习敏捷设计
查看>>
区分IE和Firefox浏览器的CSS样式写法
查看>>