环境搭建好后就是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_01" 的资源包中,我们很可能会找到关于如何配置和使用 Spring MVC 中的 Controller 的相关信息。下面我们将深入探讨 Spring MVC Controller 的核心概念、配置以及它在实际应用中的...
在传统的SpringMVC应用中,我们需要在`web.xml`中声明DispatcherServlet,并在Spring的配置文件中定义Controller、Service、Repository等组件。然而,随着Java注解的发展,SpringMVC允许我们使用注解来替代这些XML...
本项目提供了一个Controller demo,是SpringMVC入门学习的理想参考资料。 在SpringMVC中,Controller扮演着核心角色,它负责接收HTTP请求,处理业务逻辑,并将结果转发给视图进行渲染。Controller类通常会使用`@...
SpringMVC URL 与 Controller 方法初始化源码流程 Visio 文档 文档可以直接通过Visio进行编辑,方便二次修改、学习
《看透SpringMVC:源代码分析与实践》是一本深度剖析Spring MVC框架的专业书籍,旨在帮助读者深入了解Spring MVC的工作原理,并通过源代码分析提升实际开发能力。Spring MVC是Spring框架的一部分,它为构建Web应用...
在IT行业中,SpringMVC是一个广泛使用的Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)设计模式支持。这篇博文“SpringMVC:生成Excel和PDF”主要探讨了如何在SpringMVC应用中创建并导出两种常见...
《跟开涛学SpringMVC(4.3)Controller接口控制器详解》是针对Java开发者的一份深入学习资料,主要探讨了SpringMVC框架中的Controller组件。SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。...
- **Model-View-Controller**:设计模式,SpringMVC遵循此模式,模型处理业务逻辑,视图负责展示,控制器协调两者。 - **@Controller和@RequestMapping**:用于标记控制器类和处理方法,定义请求映射。 - **...
2. **Model-View-Controller**:SpringMVC中的模型由业务对象组成,视图负责展示数据,而控制器则处理用户请求,调用业务逻辑并更新模型。 **二、数据库连接** 1. **JDBC连接**: 不使用Hibernate时,我们会直接...
SpringMVC通过将Web层设计成MVC(Model-View-Controller)模式,可以使得前后端代码分离,增强程序的可维护性和可扩展性。 首先,SpringMVC作为Spring框架的一部分,继承了Spring的诸多优点,例如依赖注入(DI)和...
在SpringMVC中,我们使用`@Controller`注解来标识一个类作为控制器。例如,你可以创建一个名为`HelloController`的类,并添加`@RequestMapping`注解来处理特定的URL请求。如下所示: ```java @Controller public...
SpringMVC是Spring框架的一部分,专门用于构建Web应用程序。它是一个模型-视图-控制器(MVC)架构的实现,提供了强大的数据绑定、验证和处理HTTP请求的能力。在这个"springmvc框架搭建,已测试"的项目中,我们可以...
二、SpringMVC第一天课堂笔记 `springmvc第一天课堂笔记.docx`可能涵盖了SpringMVC的基础概念和环境搭建。这包括: 1. SpringMVC简介:解释SpringMVC的架构,以及它如何与其他Spring模块协作。 2. 搭建环境:讲解...
SpringMVC编程使用Controller接口实现控制器实例代码 SpringMVC是一个基于MVC模式的Web应用程序框架,它提供了一个灵活的方式来开发Web应用程序。在SpringMVC中,控制器(Controller)扮演着核心角色,负责处理用户...
在Spring MVC框架中,将Controller中的数据传递到JSP页面是常见的操作,这涉及到视图解析和模型数据的绑定。以下是一些详细的方法: 1. **使用`ModelAndView`对象**: `ModelAndView`是Spring MVC中用于封装模型...
在这个"springmvc 入门小项目:CRUD"中,我们将探讨如何使用 SpringMVC 实现基本的数据库操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **SpringMVC 框架基础** - **...
在本课程"跟开涛学SpringMVC(4.6)Controller接"中,我们将深入探讨SpringMVC框架中的Controller接口控制器。这个部分是SpringMVC核心组件之一,用于处理HTTP请求并返回响应。Controller接口提供了将用户请求映射到...
- **单例模式**:SpringMVC 中的 Controller 默认是单例模式,这意味着所有的请求都将由同一个实例处理。 - **线程安全问题**:由于多个线程可能同时访问同一实例,因此可能会导致线程安全问题。 - **解决方案**:...
- 控制器处理:创建SpringMVC的Controller类,通过@Autowired注解注入Service层,调用业务方法,处理HTTP请求。 - 视图渲染:Controller处理完请求后,返回一个ModelAndView对象,其中包含模型数据和视图名称,...