拦截器

Spring MVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口,重写以下3个方法。

    @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
// TODO Auto-generated method stub
String a = request.getParameter("a");
if(a.equals("10")){
//通过
return true;
}else{
//不通过
response.sendRedirect("../inter2.jsp");
}
return false;
} /**
* 在渲染View之后被调用,可以用来释放资源
*/
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub } /**
* 在调用目标方法之后,在渲染界面之前被启用
* 可以对模型及数据进行调整
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub }


文件上传

导包

commons-fileupload-1.2.jar
import java.io.File;
import java.io.IOException; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile; @Controller
@RequestMapping("/upload")
public class UploadController { @RequestMapping("/l1")
public String upload(MultipartFile file,HttpSession session) throws IllegalStateException, IOException{
//验证文件是否为空
if(!file.isEmpty()) {
//文件命名:当前时间毫秒数+原图的名字
String fileName=System.currentTimeMillis()+file.getOriginalFilename();
//服务器的上传路径
String location=session.getServletContext().getRealPath("upload");
//上传文件
file.transferTo(new File(location+"/"+fileName));
}
return "success";
} }

-中文乱码解决

在web.xml中进行配置。

  <filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

rest风格:

一种互联网软件架构。

HTTP协议的四种基本操作:

  • GET获取资源
  • POST新建资源
  • PUT更新资源
  • DELETE删除资源

rest风格的URL配置:

import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("/rest")
public class RestController { @RequestMapping("/r1")
public void r1(HttpServletRequest request,PrintWriter pw){
System.out.println(request.getMethod());
switch (request.getMethod()) {
//获取数据
case "GET":
//...
System.out.println("获取数据");
break;
//添加数据
case "POST":
//...
System.out.println("添加数据");
break;
//更新数据
case "PUT":
//...
System.out.println("更新数据");
break;
//删除数据
case "DELETE":
//...
System.out.println("删除数据");
break;
} } }

在web.xml中进行rest风格组件相关配置

 <!-- rest风格支持组件(支持表单向提交PUT/DELETE方法) -->
<filter>
<filter-name>hidden</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hidden</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

异常处理机制

异常处理机制:将遇到的错误进行封装。

在servlet.xml中配置错误处理解析器。

    <!-- 错误处理解析器 -->
<!-- <bean
id="exceptionResolver"
class="com.jredu.exception.MyExceptionHandler"/> -->
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.jredu.entity.User; @Controller
@RequestMapping("/error")
public class ErrorController { @RequestMapping("/e1")
public String e1(){
User user=null;
System.out.println(user.getPwd());
return "hello";
} }
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView; /**
* 异常处理捕获监听器
* @author Administrator
*
*/
public class MyExceptionHandler implements HandlerExceptionResolver{ @Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// TODO Auto-generated method stub
ModelAndView mav=new ModelAndView("exception");
return mav;
} }

Spring MVC—拦截器,文件上传,中文乱码处理,Rest风格,异常处理机制的更多相关文章

  1. 关于我使用spring mvc框架做文件上传时遇到的问题

    非常感谢作者 原文:https://blog.csdn.net/lingirl/article/details/1714806 昨天尝试着用spring mvc框架做文件上传,犯了挺多不该犯的毛病问题 ...

  2. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  3. spring mvc中的文件上传

    使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.x ...

  4. spring mvc 简单的文件上传与下载

    上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传 前提使用:spring mvc 在这个之前我们需要把环境给配置好 1:springmvc的XML配置文件加上这一段就即可, ...

  5. spring MVC multipart处理文件上传

    在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...

  6. Spring MVC + Java 多文件上传及多文件中转上传

    1.html内容 <div> <form method="post" action="/Cyberspace/main/informationBatch ...

  7. Spring MVC学习笔记——文件上传

    1.实现文件上传首先需要导入Apache的包,commons-fileupload-1.2.2.jar和commons-io-2.1.jar 实现上传就在add.jsp文件中修改表单 enctype= ...

  8. Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)

    准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...

  9. 1.6(Spring MVC学习笔记)文件上传与下载

    一.文件上传 实现文件上传多数是采用表单提交数据, 但对于进行文件上传的表单需要满足一下几个条件 1.表单的method设置为post 2.表单的enctype设置为multipart/form-da ...

  10. 【Spring学习笔记-MVC】Spring MVC之多文件上传 (zhan)

    http://www.cnblogs.com/ssslinppp/p/4607330.html (zhan)

随机推荐

  1. WebApplicationContext

    在Web应用中,我们会用到WebApplicationContext  用它来保存上下文信息 那么它set到ServletContext的过程是怎么样呢 1)通过WEB.XML中监听类 p.p1 { ...

  2. 记一次MAVEN依赖事故

    笔者昨天遇到的背景是这样的  MAVEN A模块有一个子模块  需要依赖B模块下的一个子模块  我在B项目内通过mvn deploy上传子模块 但之后在A模块引用  怎么引用都不行  提示 org.a ...

  3. 备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!

    前言 回首来看2020年,真的是印象中过的最快的一年了,真的是时间过的飞快,还没反应过来年就夸完了,相信大家也已经开始上班了!俗话说新年新气象,马上就要到了一年之中最重要的金三银四,之前一直有粉丝要求 ...

  4. pxe过程和原理

    pxe过程和原理 概要 远程安装和启动操作系统 网卡固件支持pxe的接口,一般是有基本的ip/udp协议栈,支持dhcp, tftp协议:bios中可以设置通过pxe启动操作系统 启动过程,大致如下: ...

  5. Logstash学习之路(二)Elasticsearch导入json数据文件

    一.数据从文件导入elasticsearch 1.数据准备: 1.数据文件:test.json 2.索引名称:index 3.数据类型:doc 4.批量操作API:bulk {"index& ...

  6. 文档驱动开发模式在 AIMS 中的应用与实践

    摘要:程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于大多 ...

  7. 【分享】wdcp服务器管理系统常用维护工具

    wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,类似国外流行的cpanel,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟 ...

  8. tf.lin_space

    .lin_spae{ start, stop, num, name=None } start:张量(float32,或者float64类型) stop:张量(和start相同) num:张量(int3 ...

  9. 新来的运维这样用HDFS,CIO都懵了···

    摘要:本文主要研究了HDFS文件系统的读写流程以及基于MRS在windows客户端下读写HDFS文件的实现. HDFS(Hadoop分布式文件系统)是Apache Hadoop项目的一个子项目. HD ...

  10. Laya 踩坑日记-人物模型穿模,模型显示不正常

    最近做游戏,人物要跑到很远的位置,z轴距离大概有20000个单位,然后就发现一个bug,到远处人物模型穿了,而且没办法改,这就尴尬了 Z轴对应值    0    100000 100000 当距离零点 ...