栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

传参

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

 @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;
	}
}


跨服务器文件上传 1.添加依赖

不使用maven的话要导3个jar包
使用Maven的话添加依赖即可


 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
   
   
  
 

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;



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

5.测试

6.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




Hello SpringMVC





	

图片上传及回显

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号