在地址栏?代表开始传参,用&来分隔变量
@RequestMapping("t2")
@ResponseBody
public String test2(String name, int age){
//地址栏:http://127.0.0.1:8080/t2?name=Tom&age=20
return "Request参数是:name="+name+",age="+age;
}
@RequestMapping("t3")
@ResponseBody
public String test3(String[] hobby){
//地址栏:http://127.0.0.1:8080/t3?hobby=eat&hobby=sleep&hobby=dadoudou
return "Request参数是:"+Arrays.toString(hobby);
}
@RequestMapping("t4")
@ResponseBody
public User test4(User user){
//地址栏:http://127.0.0.1:8080/t4?username=tom&age=19
return user;
}
请求转发、重定向
传入HttpServletRequest参数,请求转发是return “forward:”,重定向是return “redirect”
package demo.boot.controller;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("test")
public class testController {
@RequestMapping("hello")
@ResponseBody
public String helloworld() {
return "hello SpringBoot";
}
//测试请求转发
@RequestMapping("t1")
//不用在页面显示,所以不用加@ResponseBody
public String test1(HttpServletRequest request) {
request.setAttribute("str", "请求转发");
return "forward:/test/result";
}
//测试重定向
@RequestMapping("t2")
//不用在页面显示,所以不用加@ResponseBody
public String test2(HttpServletRequest request) {
request.setAttribute("str", "重定向");
return "redirect:/test/result";
}
//接收转发和重定向的结果
@RequestMapping("result")
@ResponseBody
public String result(HttpServletRequest request) {
String result=(String) request.getAttribute("str");
return "Request域中str的值:"+result;
}
}
不使用maven的话要导3个jar包
使用Maven的话添加依赖即可
2.写工具类4.0.0 org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE cn.personal.qin.demos hello-boot 1.0.0-SNAPSHOT war org.springframework spring-webmvc com.jolbox bonecp-spring 0.8.0.RELEASE org.springframework.boot spring-boot-starter-web org.apache.tomcat.embed tomcat-embed-jasper provided commons-fileupload commons-fileupload 1.3.1 com.sun.jersey jersey-client 1.19 com.sun.jersey jersey-core 1.19 ${project.artifactId} org.apache.maven.plugins maven-resources-plugin UTF-8 org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 UTF-8 org.apache.maven.plugins maven-war-plugin 3.3.1 org.springframework.boot spring-boot-maven-plugin
package util;
import java.io.IOException;
import java.util.Date;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
public class JesyFileUploadUtil {
public static String uploadFile(HttpServletRequest request,String fileName,String serverUrl) throws IOException {
//把request对象转换成多媒体的请求对象
MultipartHttpServletRequest mr=(MultipartHttpServletRequest) request;
//根据文件名获取文件对象
MultipartFile mf=mr.getFile(fileName);
//获取文件的上传流
byte[] b=mf.getBytes();
//重新设置文件名
String newFileName="";
newFileName += new Date().getTime()+"";//将当前时间获得的毫秒数拼接
Random r=new Random();
for(int i=0;i<3;i++) {
newFileName += r.nextInt(10);//生成一个0-10之间的随机整数
}
//获取文件扩展名
String orginalFileName=mf.getOriginalFilename();
String suffix=orginalFileName.substring(orginalFileName.indexOf("."));
//创建jesy服务器,进行跨服务器上传
Client client=Client.create();
//把文件关联到远程服务器
WebResource resource=client.resource(serverUrl+"/upload/"+newFileName+suffix);
//上传
resource.put(String.class,b);
//图片上传成功后
//1.ajax回调函数做图片回显(需要图片完整路径)
//2.将图片路径保存到数据库(图片的相对路径)
String fullPath=serverUrl+"/upload/"+newFileName+suffix;
String relativePath="/upload/"+newFileName+suffix;
//生成一个JSON响应给客户端
String resultJson="{"fullPath":""+fullPath+"", "relativePath":""+relativePath+""}";
return resultJson;
}
}
3.写控制层
package demo.boot.controller;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import util.JesyFileUploadUtil;
@Controller
public class uploadController {
private final String PIC_URL="http://localhost:8081/ssm_img";
@RequestMapping(value="uploadPic",method=RequestMethod.POST)
@ResponseBody
public String uploadPic(HttpServletRequest request,String fileName) {
//调用服务器上传文件的工具类方法上传文件
String result="";
try {
result = JesyFileUploadUtil.uploadFile(request,fileName,PIC_URL);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
要在创建一个名为ssm_img的工程,并且要修改一下Tomcat的端口号
4.修改Tomcat权限此时进行上传文件会报错
Tomcat默认不许修改内容,所以要修改一下权限
首先关闭Tomcat,找到Service工程,点击要修改的Tomcat,进入web.xml,点击source查看源码,ctrl+f调出搜索框,搜索readonly,向下找到代码,赋值init-param那一块,name改成readonly,value是false
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Hello SpringMVC 图片上传及回显



