本文共 6660 字,大约阅读时间需要 22 分钟。
学习工具: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.1 新建一个动态的Web项目
1.2 导入SpringMVC所需的jar包
1.3 配置Web.xml文件
1.4 新建一个Demo类
1.5 配置springmvc.xml文件
1.6 将项目添加到tomcat中,并运行
2.1 分别用Model和Map来传递数据
@GetMapping("/hello")public String helloWorld(Model model, Mapmap) { map.put("message", "map--->hello"); model.addAttribute("result", "model--->hello"); return "welcome";}
2.2 在jsp页面拿到Controller传递过来的数据
2.3 在浏览器中访问
@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"; }
在浏览器中访问
@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"; }
在浏览器中访问
5.1 在WebContent下新建一个resources文件夹,用来存放静态资源(js,css,image等)
再新建一个名为staticResources.jsp文件
5.2 新建一个Controller类
@Controllerpublic class FindStaticController { @GetMapping("/static") public String findStaticResourse() { return "staticResources"; }}
5.3 在springmvc.xml中添加如下配置:
5.4 在浏览器中访问
6.1 在WebContent下新建一个addUser.jsp文件
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 运行结果
解决中文乱码问题
1、在web.xml中添加如下配置
CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 CharacterEncodingFilter /*
2、在 tomcat的 conf目录下的 server.xml中添加如下配置
在63行左右加上URIEncoding="UTF-8"
6.4 通过实体类获取数据
6.4.1 在类路径下添加一个包,新建一个User实体类,并生成get()和set()方法
6.4.2 在Controller中做如下修改
/*** 添加用户* @param username* @param age*/@PostMapping("/addUser")public void addUser(User user) { System.out.println("用户名:" + user.getUsername() + " , 年龄:" + user.getAge());}
访问结果
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页面
7.3 访问结果
SpringMVC返回json格式的数据所需的jar包 :(版本自己任意,建议选新版本)
再在 springmvc.xml中添加如下配置 :
8.1.1 准备工作 :
添加一个 commons-fileupload-1.3.jar 包(版本自选)
在 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 运行项目访问
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 运行项目访问
在MultipartFile接口中定义了如下很多有用的方法,例如:
- getSize()方法获得文件长度,以此决定允许上传的文件大小。
- isEmpty()方法判断上传文件是否为空文件,以此决定是否拒绝空文件。
- getInputStream()方法将文件读取为java.io.InputStream流对象。
- getContentType()方法获得文件类型,以此决定允许上传的文件类型。
- transferTo(dest)方法将上传文件写到服务器上指定的文件。
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中所有的文件名 Iteratoriter = 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 运行项目访问
持续更新中......
转载地址:http://oziwi.baihongyu.com/