A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


1 springmvc文件上传
  1.1 文件上传需要满足的三个条件
         表单中必须以post提交;
         表单中的enctype必须为 multipart/form-data ;
         表单中必须要有一个文件域 type=file
  1.2 springmvc需要添加文件解析器

[XML] 纯文本查看 复制代码
 <!--配置文件解析器对象-->[/size][/font]
[font=微软雅黑][size=3]    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760" />
    </bean>
    需要注意该文件解析器的id值固定
  1.3 controller方法中通过MultipartFile对象接收上传文件

[Java] 纯文本查看 复制代码
<form action="/user/fileupload2" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload" /><br/>
        <input type="submit" value="上传" />
    </form>
	
	@RequestMapping("/fileupload2")
    public String fileuoload2(HttpServletRequest request, MultipartFile upload) throws Exception {
        System.out.println("springmvc文件上传...");

        // 使用fileupload组件完成文件上传
        // 上传的位置
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        // 判断,该路径是否存在
        File file = new File(path);
        if(!file.exists()){
            // 创建该文件夹
            file.mkdirs();
        }

        // 说明上传文件项
        // 获取上传文件的名称
        String filename = upload.getOriginalFilename();
        // 把文件的名称设置唯一值,uuid
        String uuid = UUID.randomUUID().toString().replace("-", "");
        filename = uuid+"_"+filename;
        // 完成文件上传
        upload.transferTo(new File(path,filename));

        return "success";
    }

2 springmvc的全局异常处理
2.1 异常处理思路
   系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,
后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
系统的 dao、 service、 controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端
控制器交由异常处理器进行异常处理

2.2 自定义异常类
[Java] 纯文本查看 复制代码
public class SysException extends Exception{

		// 存储提示信息的
		private String message;

		public String getMessage() {
			return message;
		}

		public void setMessage(String message) {
			this.message = message;
		}

		public SysException(String message) {
			this.message = message;
		}

	}

2.3 自定义异常处理器
  
[Java] 纯文本查看 复制代码
public class SysExceptionResolver implements HandlerExceptionResolver{[/size][/font]
[font=微软雅黑][size=3]		/**
		 * 处理异常业务逻辑
		 */
		public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
			// 获取到异常对象
			SysException e = null;
			if(ex instanceof SysException){
				e = (SysException)ex;
			}else{
				e = new SysException("系统正在维护....");
			}
			// 创建ModelAndView对象
			ModelAndView mv = new ModelAndView();
			mv.addObject("errorMsg",e.getMessage());
			mv.setViewName("error");
			return mv;
		}

	}
2.4配置异常处理器
[XML] 纯文本查看 复制代码
<bean id="sysExceptionResolver" class="cn.itcast.exception.SysExceptionResolver"/>

3 springmvc拦截器
  3.1拦截器简介
  Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。
  拦截器和web中的过滤器是有几分相似,但是也有区别,接下来我们就来说说他们的区别:
        1 过滤器是 servlet 规范中的一部分, 任何 java web 工程都可以使用。
        2 拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。
        3 过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。
        4 拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp, html,css,image 或者 js 是不会进行拦
        截的。
   3.2 自定义拦截器

[Java] 纯文本查看 复制代码
public class MyInterceptor1 implements HandlerInterceptor{
		/**
		 * 预处理,controller方法执行前
		 * return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
		 */
		public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
			System.out.println("MyInterceptor1执行了...前1111");
			// request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
			return true;
		}
		/**
		 * 后处理方法,controller方法执行后,success.jsp执行之前
		 */
		public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
			System.out.println("MyInterceptor1执行了...后1111");
			// request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
		}

		/**
		 * success.jsp页面执行后,该方法会执行
		 */
		public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
			System.out.println("MyInterceptor1执行了...最后1111");
		}

	}

3.3 配置拦截器
[XML] 纯文本查看 复制代码
<mvc:interceptors>
        <!--配置拦截器-->
        <mvc:interceptor>
            <!--要拦截的具体的方法-->
            <mvc:mapping path="/user/*"/>
            <!--不要拦截的方法
            <mvc:exclude-mapping path=""/>
            -->
            <!--配置拦截器对象-->
            <bean class="cn.itcast.controller.cn.itcast.interceptor.MyInterceptor1" />
        </mvc:interceptor>
    </mvc:interceptors>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马