环境搭建好后就是Controller的编写了
1 可以通过继承AbstractController,实现protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp)方法,访问这个Controller,默认访问这个方法【此方法就相当Strust2的execute()方法】
在[servlet-name]-servlet.xml中注册这个bean,<bean name="xxx.xxx" class = "这个类的全限定名" />
通过url xxx.xxx访问这个controller
2 @Controller注解,实际开发中基本上也都是这种方式
2.1 基本形式
@RequestMapping(value="/findUser",method=RequestMethod.GET) public String findUser(@RequestParam String username){ System.out.println("username is "+username); return "example"; //视图名称 }
@RequestParam注解:url中?后面必须带username,否则会报错404,如果不加这个注解也可以起到同样 的作用,容错性要高。
return 返回的就是视图名称 ,会根据[dispatcherservlet-name]-servlet.xml中resolver跳转到对应的视图。
2.2 返回ModelAndView
@RequestMapping(value="/findUser",method = RequestMethod.POST) public ModelAndView findUser(User user){ ModelAndView mv = new ModelAndView("user"); //返回ModelAndView形式,试图名称在这里写 mv.addObject("user", user); //通过"user"取值 mv.addObject(user);//通过user类型取值 return mv; //返回ModelAndView }
在user.jsp中可以取到user对象
2.3 关于Bean中有Date类型的属性: 通过@InitBinder
@RequestMapping("/todate") public ModelAndView toDate(Date date){ ModelAndView mv = new ModelAndView("user"); mv.addObject("today", "2016-04-19"); mv.addObject(date); return mv; } //由于请求过来的url中的参数都是String类型,所以当Bean中有Date的时候会自动将String转换为Date @InitBinder public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); }
3 controller返回数据给JSP
3.1 通过Map向页面传递参数
@RequestMapping(value="/show",method=RequestMethod.GET) public String showUser(Map<String,Object> map){ User user = new User("tomcat","tomcat",11); map.put("user", user); return "show"; } @RequestMapping("/getuser") public void getPerson(String username,PrintWriter pw){ pw.write("hello : "+username); }
和普通方式一样, 第二个方法和Map方式返回数据无关,顺手贴上去
3.2 file upload:
jsp页面:
<form action="user/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"><br> type和name都必须是file <input type="submit" value="submit"> </form>
controller中:
@RequestMapping("/upload") public ModelAndView uploadFile(HttpServletRequest req,ModelAndView mv) throws Exception{ logger.info(">>>>>>>>>上传文件开始........."); MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest)req; MultipartFile file = mulReq.getFile("file");//jsp中name="file" String originalFilename = file.getOriginalFilename(); String newFileName = originalFilename.substring(0,originalFilename.lastIndexOf('.')); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); FileOutputStream fos = new FileOutputStream("D:/app/"+newFileName+"_"+sdf.format(new Date())); //文件存储位置 fos.write(file.getBytes()); fos.flush(); fos.close(); logger.error(">>>>>>>>>上传文件出错......."); return mv; }
4 通过Model 将数据返回给jsp
@RequestMapping(value="/list",method=RequestMethod.GET) public String listUser(Model model){ logger.info(">>>>>>>>>进入userList方法......"); model.addAttribute("users", users); return "user/list"; }
jsp中
<c:forEach items="${users }" var="user"> <a href="${pageContext.request.contextPath }/user/${user.value.username }">${user.value.username }</a>---${user.value.pwd }---${user.value.age }<br> </c:forEach>
5 springmvc的restful形式 @PathVariable注解
@RequestMapping(value="/{username}",method=RequestMethod.GET) public String showUser(@PathVariable String username,Model model){ logger.info(">>>>>>>>>进入showUser方法......"); model.addAttribute("user", users.get(username)); logger.error(">>>>>>>>>查询用户失败........."); return "user/show"; }
要在controller中的获取request、response、sesison 只需要以形参的实行引入即可
文中的日志可以不管,是随手加上去的,没有实际意义
相关推荐
JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton
springmvc上传文件controller,vue
SpringMVC4.0 一个Controller多个方法
springmvc非注解controller控制器
springmvc controller
springmvc 上传文件代码 最基础的
SpringMVC URL 与 Controller 方法初始化源码流程 Visio 文档 文档可以直接通过Visio进行编辑,方便二次修改、学习
springmvc controller
Spring MVC AOP通过自定义注解方式拦截Controller等实现日志管理, springMVC里做添加AOP拦截,用于捕获异常。
springmvc controller
主要介绍了springMVC如何将controller中数据传递到jsp页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
工程可以直接使用,包含springmvc 控制器等详细完整的项目,只需要部署即可
搭建SpringMVC模型,包含控制层(@Controller)、 业务逻辑层Service(@Service)、持久层(@Repository)三层注入方式。
主要介绍了SpringMVC编程使用Controller接口实现控制器实例代码,具有一定参考价值,需要的朋友可以参考下。
springmvc事务配置到controller.zip
NULL 博文链接:https://sharpspeed.iteye.com/blog/1098367
弹簧 @Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践
springMVC简单框架
这是基于springmvc的一个小型框架,自己搭建,简单可运行
SpringMVC URL 与 Controller 方法初始化源码流程 Visio 文档 文档可以直接通过Visio进行编辑,方便二次修改、学习