SpringMVC学习【2】

编程入门 行业动态 更新时间:2024-10-24 16:29:21

<a href=https://www.elefans.com/category/jswz/34/1766363.html style=SpringMVC学习【2】"/>

SpringMVC学习【2】

1. 响应:

(1):返回值为String:

①:使用方法:

    /*** 在request中存值* @param model* @return*/@RequestMapping("/testString")public String testString(Model model){User user = new User();user.setUname("JOJO");user.setAge(12);model.addAttribute("user", user);return "success";}

②:请求:

    <h2>从request域中取值</h2><a href="user/testString">往request里存值</a><hr/>

③:success界面:

    <h2>执行成功</h2>${user.uname} ${user.age}<hr/>

(2):返回值为void:

①:使用:

    /*** 默认情况*/@RequestMapping("/testVoid")public void testVoid(){System.out.println("void");}

②:请求:

    <h2>void返回值</h2><a href="user/testVoid">void返回值</a><hr/>

③:响应内容:

**user/testVoid.jsp

(3):ModelAndView做返回值:

①:使用方式:

    /*** ModelAndView做返回值* @return*/@RequestMapping("/testModelAndView")public ModelAndView testModelAndView(){ModelAndView mv = new ModelAndView();User user = new User();user.setUname("花太郎");user.setAge(12);mv.addObject(user);mv.setViewName("success");return mv;}

②:请求:

    <h2>ModelAndView返回值</h2><a href="user/testModelAndView">ModelAndView返回值</a><hr/>

③:success界面:

    <h2>执行成功</h2>${user.uname} ${user.age}<hr/>

(4):ajax请求和响应:

①:使用方式:

    /*** ajax请求*/@RequestMapping("/testAjax")public @ResponseBody A testAjax(@RequestBody A a){System.out.println(a);a.setName("JOJO");return a;}

②:请求方式:

    <h2>ajax请求</h2><button id="btn" >ajax</button>
    <script src="js/jquery.min.js"></script><script>$(function(){$("#btn").click(function () {$.ajax({url:"user/testAjax",contentType:'application/json;charset=UTF-8',data:'{"name":"hehe", "age":12}',dataType:"json",type:"post",success:function(data){alert(data.name);}})});});</script>

③:运行结果:

2. 文件上传:

SpringMVC配置:

    <!--文件解析器--><bean id="multipartResolver" class="org.springframework.web.multipartmons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760"></property></bean>

(1):传统方式:

①:请求:

    <h2>传统文件上传</h2><form method="post" action="file/precedingUpload" enctype="multipart/form-data">文件:<input type="file" name="upload"><br/><input type="submit" value="提交"></form>

②:实现:

    /*** 以前的文件上传fileupload+io* @param request* @return* @throws Exception*/@RequestMapping("/precedingUpload")public String precedingUpload(HttpServletRequest request) throws Exception {String path = request.getSession().getServletContext().getRealPath("/uploads/");File file = new File(path);if (!file.exists())file.mkdirs();DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List<FileItem> items = upload.parseRequest(request);System.out.println(items);for (FileItem item:items){if (item.isFormField()){System.out.println(2);}else {System.out.println("1");String filename = item.getName();String uuid = UUID.randomUUID().toString().replace("-", "");filename = uuid+"_"+filename;System.out.println(filename);item.write(new File(path, filename));item.delete();}}return "success";}

(2):SpringMVC方式:

①:请求:

    <h2>SpringMVC文件上传</h2><form method="post" action="file/springMVCUpload" enctype="multipart/form-data">文件:<input type="file" name="upload"><br/><input type="submit" value="提交"></form>

②:实现:

     /*** SpringMVC上传* @param request* @param upload 必须和表单中file类型的input的name相同* @return* @throws Exception*/@RequestMapping("/springMVCUpload")public String SpringMVCUpload(HttpServletRequest request, MultipartFile upload) throws Exception {String path = request.getSession().getServletContext().getRealPath("/uploads/");File file = new File(path);if (!file.exists())file.mkdirs();System.out.println(path);String filename = upload.getOriginalFilename();String uuid = UUID.randomUUID().toString().replace("_", "");filename = uuid+"_"+filename;upload.transferTo(new File(path, filename));return "success";}

(3):跨服务器上传:

①:请求:

    <h2>跨服务器文件上传</h2><form method="post" action="file/pastServerUpload" enctype="multipart/form-data">文件:<input type="file" name="upload"><br/><input type="submit" value="提交"></form>

②:实现:

    /*** 跨服务器上传* @param upload* @return* @throws Exception*/@RequestMapping("/pastServerUpload")public String PastServerUpload(MultipartFile upload) throws Exception {String path = "https://localhost:8080/uploads/";String filename = upload.getOriginalFilename();String uuid = UUID.randomUUID().toString().replace("_", "");filename = uuid+"_"+filename;Client client = Client.create();WebResource resource = client.resource(path + filename);resource.put(upload.getBytes());return "success";}

3. 异常处理:

(1):控制器实现:

@Controller
@RequestMapping("/exception")
public class ExceptionController {@RequestMapping("/testException")public String testException() throws SysException {try {int a = 1/0;} catch (Exception e) {throw new SysException("测试出现异常...");}return "success";}
}

(2):异常类:

public class SysException extends Exception {private String massage;public String getMassage() {return massage;}public void setMassage(String massage) {this.massage = massage;}public SysException(String massage) {this.massage = massage;}
}

(3):异常处理器:

public class SysExceptionResolver implements HandlerExceptionResolver {public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {SysException se = null;if (e instanceof SysException){se = (SysException)e;}else {se = new SysException("系统维护...");}ModelAndView mv = new ModelAndView();mv.addObject("errorMsg", se.getMassage());mv.setViewName("error");return mv;}
}

(4):配置异常处理器:

    <bean id="sysExceptionResolver" class="cn.xupt.exception.SysExceptionResolver"></bean>

4. 拦截器:只能拦截controller类中的方法,不能拦截js、css等资源。

(1):控制器实现:

    @RequestMapping("testIntercepter")public String testIntercepter(){System.out.println("测试拦截器");return "success";}

(2):过滤器实现:

public class IntercepterDemo1 implements HandlerInterceptor {/*** 预处理方法* @param request* @param response* @param handler* @return  true:放行 false:不放行* @throws Exception*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("拦截器预处理");return true;}/*** 执行完controller后执行* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("后处理");}/*** 最后执行* @param request* @param response* @param handler* @param ex* @throws Exception*/public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("最后执行");}
}

(3):配置拦截器:

    <!--配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/intercepter/*"/><bean class="cn.xupt.Intercepter.IntercepterDemo1"></bean></mvc:interceptor></mvc:interceptors>

更多推荐

SpringMVC学习【2】

本文发布于:2024-03-23 01:28:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738861.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SpringMVC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!