小型企业网站的设计与实现,wordpress安装532,wordpress network,个人网站建设知乎拦截器: 拦截不符合规则的#xff0c;放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。
如何定义拦截器。
定义一个类并实现拦截器接口
public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest reque…拦截器: 拦截不符合规则的放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。
如何定义拦截器。
定义一个类并实现拦截器接口
public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取session对象HttpSession sessionrequest.getSession();//获取session当前用户的信息Object userinfo session.getAttribute(userinfo);if(userinfonull){//没有登录跳转到登录页面response.sendRedirect(/login.jsp);return false;}return true; //如果返回值为true表示拦截器放行。否则拦截器不放行}
}
注册拦截器并配置拦截规则--springmvc配置文件中 !--注册自定义拦截器以及拦截规则--mvc:interceptorsmvc:interceptor!--path:拦截的路径 /**表示拦截多层路径--mvc:mapping path/**/!--排除的路径。--mvc:exclude-mapping path/user/login/!--放置自定义的拦截器类--bean classcom.aaa.interceptor.MyInterceptor//mvc:interceptor/mvc:interceptors
全局异常处理 如果controller发生异常我们需要对controller层中的所有方法都进行处理。这样比较麻烦。我们可以对所有controller中的接口提供一个统一的异常处理。 定义全局异常类
//全局异常处理类.
ControllerAdvice
public class MyGlobalException {ExceptionHandler(Exception.class) //当发生Exception类型的异常会执行该方法并异常对象传递给该方法的参数。ResponseBodypublic String handlerException(Exception e){System.out.println(e.getMessage());System.out.println(错误~~~~~~~~~~~~~~~~~~~~~~~~~);return error2222222222222222222222;//经过视图解析器: /views/error.jsp}ExceptionHandler(ArithmeticException.class)ResponseBodypublic String handlerArithmeticException(Exception e){System.out.println(错误****************************);return error2222222222222222222;}
}
注意:保证springmvc能够扫描到该异常处理类
function loadEmp(){$.ajax({url:/emp/list,type:get,dataType:json,//服务器响应成功success:function(data){console.log(data)var str;for(var i0;idata.length;i){strtrstrtddata[i].empId/tdstrtddata[i].empName/tdstrtddata[i].empJob/tdstrtddata[i].empSalary/tdstrtddata[i].dept.deptName/tdstrtda οnclickdeleteEmp(data[i].empId)删除/aa οnclick/views/update.jsp修改/a/tdstr/tr
}document.getElementById(empBody).innerHTMLstr;},//服务器响应故障error: function (data){console.log(data);}})}
文件上传
原理 完成文件上传--本地服务器保存
引入文件上传的依赖jar !--文件上传依赖--dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.5/version/dependency
配置文件上传解析器 !--文件上传解析器--bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!--最大上传的大小。单位byte字节。5M5*1024*1024--property namemaxUploadSize value5242880/!--设置文件上传的编码--property namedefaultEncoding valueutf-8//bean
编写文件上传的页面 %--文件上传的表单提交方式必须为post.而且需要设置表单提交的编码格式。enctypemultipart/form-data 该类型表示既能上传文本又能上传文件。--%form action/upload methodpost enctypemultipart/form-data选择文件:input typefile namemyfile/br姓名:input typetext nameusername/brinput typesubmit//form
编写上传的api接口 RequestMapping(/upload)public String upload(MultipartFile myfile, HttpServletRequest request) throws IOException {//1.获取保存文件的路径String realPath request.getSession().getServletContext().getRealPath(/images);//2.根据上面的路径创建文件对象File filenew File(realPath);//3.判断该文件夹是否存在if(!file.exists()){file.mkdirs();}//4.获取上传文件的名称. 获取登录者ip登录者id登录者的时间戳String filename UUID.randomUUID().toString().replace(-,)myfile.getOriginalFilename();//5.把上传的文件保存到指定服务器下的路径。File targetnew File(realPath/filename);myfile.transferTo(target);System.out.println(上传成功);return main;}
完成文件上传--文件保存到文件服务器 如果把文件存在本地服务器服务器与服务器之间无法共享文件。我们需要一个专门存放文件的服务器。
可以自己搭建文件服务器[FastDFS Hadoop] 或者租第三方阿里云。