SSM框架学习总结之路(八)

框架学习SpringMVC02

一、@ResponseBody

  • 1.在方法上只有@RequestMapping 时,无论方法返回值是什么认为需要跳转
  • 2.在方法上添加@ResponseBody(恒不跳转)
    • 2.1 如果返回值满足 key-value 形式(对象或 map)
      • 2.1.1 把响应头设置为application/json;charset=utf-8
    • 2.1.2 把转换后的内容输出流的形式响应给客户端.
    • 2.2 如果返回值不满足 key-value,例如返回值为 String
      • 2.2.1 把相应头设置为 text/html
      • 2.2.2 把方法返回值以流的形式直接输出.
      • 2.2.3 如果返回值包含中文,出现中文乱码
        • 2.2.3.1 produces 表示响应头中 Content-Type 取值.
  • 3.底层使用Jackson进行json转换,在项目中一定要导入jackson的jar
    • 3.1spring4.1.6 对 jackson 不支持较高版本,jackson2.7 无效.
@RequestMapping(value="demo12",produces="text/html; charset=utf-8")
@ResponseBody 
public String demo12() throws IOException{ 
	People p = new People(); 
	p.setAge(12);
	p.setName("张三"); 
	return "中文";
}

二、SpringMVC 作用域传值的几种方式

  • 1.使用原生 Servlet
    • 1.1 在 HanlderMethod 参数中添加作用域对象
@RequestMapping("demo1") 
public String demo1(HttpServletRequest abc,HttpSession sessionParam){
	//request 作用域 
	abc.setAttribute("req", "req 的值"); 
	//session 作用域 
	HttpSession session = abc.getSession();
	session.setAttribute("session", "session 的值"); 
	sessionParam.setAttribute("sessionParam",
	"sessionParam 的值"); 
	//appliaction 作用域 
	ServletContext application = abc.getServletContext(); 
	application.setAttribute("application","application 的值"); 
	return "/index.jsp"; 
}
  • 2.使用 Map 集合
    • 2.1 把 map 中内容放在 request 作用域中
    • 2.2spring 会对 map 集合通过BindingAwareModelMap 进行实例
@RequestMapping("demo2") 
public String demo2(Map<String,Object> map){ 
	System.out.println(map.getClass());
	map.put("map","map 的值"); 
	return "/index.jsp";
}

  • 3.使用 SpringMVC 中 Model 接口
    • 3.1 把内容最终放入到 request 作用域中.
@RequestMapping("demo3") 
public String demo3(Model model){
	model.addAttribute("model", "model 的值"); 
	return "/index.jsp";
}

  • 4.使用 SpringMVC 中 ModelAndView 类
@RequestMapping("demo4")
public ModelAndView demo4(){
	//参数,跳转视图 
	ModelAndView mav = new ModelAndView("/index.jsp");
	mav.addObject("mav", "mav 的值"); 
	return mav;
}

三.文件下载

  • 1.访问资源时相应头如果没有设置 Content-Disposition,浏览器默认按
    照 inline 值进行处理
    • 1.1inline 能显示就显示,不能显示就下载.
  • 2.只需要修改相应头中 Context-Disposition=”attachment;filename=文件名”
    • 2.1attachment 下载,以附件形式下载.
    • 2.2filename=值就是下载时显示的下载文件名
  • 3.实现步骤
    • 3.1 导入 apatch 的两个 jar
      在这里插入图片描述

    • 3.2 在 jsp 中添加超链接,设置要下载文件

      • 3.2.1 在 springmvc 中放行静态资源 files 文件夹
    • 3.3 编写控制器方法

<a href="download?fileName=a.rar">下载</a>


@RequestMapping("download") 
public void download(String fileName,HttpServletResponse res,HttpServletRequest req) throws IOException{
	//设置响应流中文件进行下载 
	res.setHeader("Content-Disposition", "attachment;filename="+fileName);
	//把二进制流放入到响应体中. 
	ServletOutputStream os = res.getOutputStream(); 
	//获取files资源文件夹的完整路径
	String path = req.getServletContext().getRealPath("files"); 
	System.out.println(path); 
	File file = new File(path, fileName); 
	byte[] bytes = FileUtils.readFileToByteArray(file); 
	os.write(bytes); 
	os.flush(); 
	os.close(); 
}

四、文件上传

  1. 基于 apache 的 commons-fileupload.jar 完成文件上传.
  2. MultipartResovler 作用:
    2.1 把客户端上传的文件流转换成 MutipartFile 封装类.
    2.2 通过 MutipartFile 封装类获取到文件流
  3. 表单数据类型分类
    3.1 在的 enctype 属性控制表单类型
    3.2 默认值 application/x-www-form-urlencoded,普通表单数据.(少
    量文字信息)
    3.3 text/plain 大文字量时使用的类型.邮件,论文
    3.4 multipart/form-data 表单中包含二进制文件内容.
  4. 实现步骤:
    4.1 导入 springmvc 包和 apache 文件上传 commons-fileupload 和commons-io 两个 jar
    4.2 编写 JSP 页面
<form action="upload" enctype="multipart/form-data" method="post">
	姓名:<input type="text" name="name"/><br/> 
	文件:<input type="file" name="file"/><br/> 
	<input type="submit" value=" 提 交 "/> 
</form>
  • 4.3 配置 springmvc.xml
<!-- MultipartResovler 解析器 --> 
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.Comm onsMultipartResolver"> 
<!--  设置最大下载文件大小 --> 
<property name="maxUploadSize" value="50"></property> 

</bean>
<!-- 异常解析器 --> 
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.Simple MappingExceptionResolver"> 

	<property name="exceptionMappings"> 
		<props> 
			<prop key="org.springframework.web.multipart.MaxUploadSizeE xceededException">/error.jsp</prop> 
		</props> 
	</property> 
</bean>

  • 4.4 编写控制器类
    • 4.4.1MultipartFile 对象名必须和<inputtype=”file”/>的 name 属性值相同
@RequestMapping("upload") 
public String upload(MultipartFile file,String name) throws IOException{ 
	String fileName = file.getOriginalFilename(); 
	String suffix = fileName.substring(fileName.lastIndexOf("."));
	//判断上传文件类型 
	if(suffix.equalsIgnoreCase(".png")){ 
		String uuid = UUID.randomUUID().toString();
		FileUtils.copyInputStreamToFile(file.getInputStream (), new File("E:/"+uuid+suffix)); 
		return "/index.jsp"; 
	}
	else{ 
		return "error.jsp"; 
	} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SSM(Spring+SpringMVC+MyBatis)是一种基于Java语言的Web开发框架学习这个框架的过程中,我深刻体会到它的强大和灵活性。 首先,Spring框架为开发者提供了一个强大的IOC(Inversion of Control)容器,它能够管理和注入对象,减少了代码之间的耦合性。通过配置文件或注解,我们可以轻松地定义和获取各种对象,提高了代码的可维护性和可扩展性。 其次,SpringMVC框架是一种MVC(Model-View-Controller)设计模式的实现,它用于处理Web请求和响应。通过配置一个请求映射表和处理器,我们可以将请求分发给相应的控制器进行处理,并将处理结果返回给客户端。SpringMVC还提供了一些便捷的注解和标签,用于简化页面的渲染和参数的绑定。 最后,MyBatis是一种优秀的持久化框架,它能够将数据库操作与Java对象之间的映射简化为简单的配置。通过编写SQL映射文件和定义POJO(Plain Old Java Object)类,我们可以方便地进行数据库的增删改查操作,而无需编写冗长的SQL语句。 在学习Java SSM框架的过程中,我深入理解了软件开发过程中的MVC思想,并学会了如何利用Spring、SpringMVC和MyBatis来实现一个完整的Web应用程序。通过不断的实践和调试,我逐渐培养了自己解决问题和调试代码的能力。 总结起来,学习Java SSM框架使我深入理解了软件开发的各个环节,并提升了我的编码能力和开发效率。我相信这些知识和经验将对我的职业发展和项目实施起到积极的促进作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值