200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > SpringMVC第二讲——传参 修改端口 请求转发 重定向 跨服务器文件上传

SpringMVC第二讲——传参 修改端口 请求转发 重定向 跨服务器文件上传

时间:2018-07-09 22:37:48

相关推荐

SpringMVC第二讲——传参 修改端口 请求转发 重定向 跨服务器文件上传

传参

在地址栏?代表开始传参,用&来分隔变量

/*** 请求参数-简单传参* @param name* @param age* @return*/@RequestMapping("t2")@ResponseBodypublic String test2(String name, int age){//地址栏:http://127.0.0.1:8080/t2?name=Tom&age=20//form表单中的name是啥就会传过来啥,所以这个name和表单的name要一致//省去了request.getParameter("name")这句话return "Request参数是:name="+name+",age="+age;}/*** 请求传参-数组* @param hobby* @return*/@RequestMapping("t3")@ResponseBodypublic String test3(String[] hobby){//地址栏:http://127.0.0.1:8080/t3?hobby=eat&hobby=sleep&hobby=dadoudou//用于多选return "Request参数是:"+Arrays.toString(hobby);}/*** 请求传参-实体* @param user* @return*/@RequestMapping("t4")@ResponseBodypublic User test4(User user){//地址栏:http://127.0.0.1:8080/t4?username=tom&age=19//若传来的信息足够一个实体的所需的所有信息(可以多出来别的实体没有的信息),则可以自动变成实体传进来return user; }

修改端口

在resources包下新建一个File文件,取名Application.properties

server.port=8090

请求转发、重定向

传入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")@ResponseBodypublic String helloworld() {return "hello SpringBoot";}//测试请求转发@RequestMapping("t1")//不用在页面显示,所以不用加@ResponseBodypublic String test1(HttpServletRequest request) {request.setAttribute("str", "请求转发");return "forward:/test/result";}//测试重定向@RequestMapping("t2")//不用在页面显示,所以不用加@ResponseBodypublic String test2(HttpServletRequest request) {request.setAttribute("str", "重定向");return "redirect:/test/result";}//接收转发和重定向的结果@RequestMapping("result")@ResponseBodypublic String result(HttpServletRequest request) {String result=(String) request.getAttribute("str");return "Request域中str的值:"+result;}}

跨服务器文件上传

1.添加依赖

不使用maven的话要导3个jar包

使用Maven的话添加依赖即可

<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- Begin##01、添加SpringBoot的parent支持##Begin --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><!-- End##01、添加SpringBoot的parent支持##End --><groupId>cn.personal.qin.demos</groupId><artifactId>hello-boot</artifactId><version>1.0.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></dependency><!-- 连接池 --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency><!-- Begin##02、添加SpringBoot的Web支持##Begin --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- End##02、添加SpringBoot的Web支持##End --><!-- Begin##添加JSP支持##Begin --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope></dependency><!-- End##添加JSP支持##Begin --><!-- 文件上传 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!--跨服务器上传 --><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.19</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-core</artifactId><version>1.19</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- 设置jdk版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- Begin##03、添加SpringBoot的插件支持##Begin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.1</version></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- End##03、添加SpringBoot的插件支持##End --></plugins></build></project>

2.写工具类

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;/*** @author Vincent_lz* 跨服务器上传工具类*/public class JesyFileUploadUtil {/*** * @param request 从request对象中获取上传的文件* @param fileName 文件名* @param serverUrl 服务器路径* @return* @throws IOException */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;@Controllerpublic class uploadController {private final String PIC_URL="http://localhost:8081/ssm_img";@RequestMapping(value="uploadPic",method=RequestMethod.POST)@ResponseBodypublic 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

5.测试

6.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Hello SpringMVC</title><script type="text/javascript"src="${pageContext.request.contextPath }/js/jquery.js"></script><script type="text/javascript"src="${pageContext.request.contextPath }/js/jquery.form.js"></script><script type="text/javascript">function submitImgSize1Upload() {var option = {type : 'POST',url : '${pageContext.request.contextPath }/uploadPic',dataType : 'text',data : {fileName : 'imgSize1File'},success : function(data) {console.log(data);//把json格式的字符串转换成json对象var jsonObj = $.parseJSON(data);//返回服务器图片路径,把图片路径设置给img标签$("#imgSize1ImgSrc").attr("src", jsonObj.fullPath);//数据库保存相对路径$("#imgSize1").val(jsonObj.relativePath);}};$("#itemForm").ajaxSubmit(option);}</script></head><body><h3>图片上传及回显</h3><form id="itemForm" method="post"><img id='imgSize1ImgSrc' src='${picPath }${item.pic }' height="100"width="100" /><input type='file' name='imgSize1File' class="file" onchange='submitImgSize1Upload()' /></form></body></html>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。