`
ssxxjjii
  • 浏览: 948553 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

注解驱动的spring mvc(二)

阅读更多

四:视图名的确定。

spring mvc可以通过可以通过多种方式确定视图名,在前面的例子中,方法无返回值,视图名更具请求参数确定。Controller方法还是返回一个String类型的值作为视图名。

Java代码 复制代码
  1. @RequestMapping("/user/list.htm")   
  2. public String listAllUser(){   
  3.     return "user/list-user";   
  4. }  
@RequestMapping("/user/list.htm")
public String listAllUser(){
	return "user/list-user";
}

那么该例子的视图文件就为/WEB-INF/jsp/user/list-user.jsp

五:视图模型参数的传递。

在spring mvc中可以通过ModelMap对象传递模型参数到视图进行处理。在Controller方法中声明一个ModelMap参数,spring会创建一个ModelMap对象,并传入方法,方法处理完成后自动传递到视图进行处理。

Java代码 复制代码
  1. @RequestMapping("/user/list.htm")   
  2. public String listAllUser(ModelMap model){   
  3.     List<User> users = new ArrayList<User>();   
  4.     User user = new User();   
  5.     user.setPassword("user1");   
  6.     user.setPassword("pwd");   
  7.     user.setAge(20);   
  8.     users.add(user);   
  9.        
  10.     user = new User();   
  11.     user.setPassword("user2");   
  12.     user.setPassword("pwd2");   
  13.     user.setAge(22);   
  14.     users.add(user);   
  15.        
  16.     model.addAttribute("users", users);   
  17.     return "user/list-user";   
  18. }  
	@RequestMapping("/user/list.htm")
	public String listAllUser(ModelMap model){
		List<User> users = new ArrayList<User>();
		User user = new User();
		user.setPassword("user1");
		user.setPassword("pwd");
		user.setAge(20);
		users.add(user);
		
		user = new User();
		user.setPassword("user2");
		user.setPassword("pwd2");
		user.setAge(22);
		users.add(user);
		
		model.addAttribute("users", users);
		return "user/list-user";
	}

model中的参数默认是添加在request作用域中的,该例中视图可以通过request.getAttribute("users")获得user列表。在视图中使用jstl输出

Xml代码 复制代码
  1. <c:forEach var="user" items="${requestScope.users}">  
  2.     ${user.username }   
  3.     ${user.password }   
  4.     ${user.age }   
  5. </c:forEach>  
<c:forEach var="user" items="${requestScope.users}">
	${user.username }
	${user.password }
	${user.age }
</c:forEach>

还可以通过在Controller方法返回一个ModelMap对象,这种情况下,视图名由请求Url确定。

Java代码 复制代码
  1. @RequestMapping("/user/list-user.htm")   
  2. public ModelMap listAllUser() {   
  3.     List<User> users = new ArrayList<User>();   
  4.     //.........   
  5.     ModelMap model = new ModelMap();   
  6.     model.addAttribute("users", users);   
  7.     return model;   
  8. }  
	@RequestMapping("/user/list-user.htm")
	public ModelMap listAllUser() {
		List<User> users = new ArrayList<User>();
		//.........
		ModelMap model = new ModelMap();
		model.addAttribute("users", users);
		return model;
	}

另外可以通过在Controller上添加@SessionAttributes注解指定某个model参数为session作用域的

六:特殊输入参数

spring mvc还可以往Controller方法传入request,session等特殊的参数。

Java代码 复制代码
  1. @Controller  
  2. public class RequestController {   
  3.   
  4.     @RequestMapping("/handleRequest.htm")   
  5.     public void handleRequest(HttpServletRequest request,   
  6.             HttpServletResponse response, HttpSession session)   
  7.             throws IOException {   
  8.         String param = (String) request.getParameter("param");   
  9.         if (param != null) {   
  10.             session.setAttribute("param", param);   
  11.         }   
  12.         PrintWriter out = response.getWriter();   
  13.         out.println("<h1>" + session.getAttribute("param") + "</h1>");   
  14.         out.flush();   
  15.         out.close();   
  16.     }   
  17. }  
@Controller
public class RequestController {

	@RequestMapping("/handleRequest.htm")
	public void handleRequest(HttpServletRequest request,
			HttpServletResponse response, HttpSession session)
			throws IOException {
		String param = (String) request.getParameter("param");
		if (param != null) {
			session.setAttribute("param", param);
		}
		PrintWriter out = response.getWriter();
		out.println("<h1>" + session.getAttribute("param") + "</h1>");
		out.flush();
		out.close();
	}
}

 如果在Controller方法中直接使用了response输入,方法应该返回void,不再使用视图。

七:处理文件上传

在前面的例子中配置了multipartResolver bean。该bean对http请求中的mutipart form data进行处理。spring mvc默认支持common fileupload 和 cos 所以需要把相应的jar包放入lib中。

Java代码 复制代码
  1. @Controller  
  2. public class FileUploadController {   
  3.     @RequestMapping("/fileupload.htm")   
  4.     public void upload(MultipartHttpServletRequest request,   
  5.             HttpServletResponse response) throws IOException {   
  6.         MultipartFile file = request.getFile("file");   
  7.         byte[] buffer = new byte[1024];   
  8.         int len = -1;   
  9.         InputStream in = file.getInputStream();   
  10.         String contextPath = request.getRealPath("/");   
  11.         String path = contextPath + "\\" + file.getOriginalFilename();   
  12.         OutputStream out = new FileOutputStream(path);   
  13.         while ((len = in.read(buffer)) != -1) {   
  14.             out.write(buffer, 0, len);   
  15.         }   
  16.         in.close();   
  17.         out.close();   
  18.         response.getWriter().println("Upload Success!");   
  19.     }   
  20. }  
@Controller
public class FileUploadController {
	@RequestMapping("/fileupload.htm")
	public void upload(MultipartHttpServletRequest request,
			HttpServletResponse response) throws IOException {
		MultipartFile file = request.getFile("file");
		byte[] buffer = new byte[1024];
		int len = -1;
		InputStream in = file.getInputStream();
		String contextPath = request.getRealPath("/");
		String path = contextPath + "\\" + file.getOriginalFilename();
		OutputStream out = new FileOutputStream(path);
		while ((len = in.read(buffer)) != -1) {
			out.write(buffer, 0, len);
		}
		in.close();
		out.close();
		response.getWriter().println("Upload Success!");
	}
}

 MultipartHttpServletRequest可以获得多个上传文件,同时可以获得传入的其他Http参数。

八:异常处理

Xml代码 复制代码
  1. <bean id="exceptionResolver"     
  2.  class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">     
  3.       <property name="defaultErrorView">     
  4.           <value>/exception/error</value>     
  5.       </property>     
  6.       <property name="exceptionMappings">     
  7.           <props>     
  8.               <prop key="java.sql.SQLException">     
  9.                  /exception/dberror     
  10.              </prop>     
  11.          </props>     
  12.      </property>     
  13. </bean>   
   <bean id="exceptionResolver"  
    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
         <property name="defaultErrorView">  
             <value>/exception/error</value>  
         </property>  
         <property name="exceptionMappings">  
             <props>  
                 <prop key="java.sql.SQLException">  
                    /exception/dberror  
                </prop>  
            </props>  
        </property>  
   </bean> 

  

分享到:
评论

相关推荐

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...

    使用 Spring 2_5 基于注解驱动的 Spring MVC

    1. **注解驱动的Controller**:在Spring 2.5中,你可以使用`@Controller`注解来标记一个类作为Spring MVC的控制器。这个注解告诉Spring该类包含处理HTTP请求的方法。例如: ```java @Controller public class ...

    学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例

    总的来说,Spring MVC通过注解驱动的编程模型、强大的依赖注入和面向切面编程,提供了一种高效且灵活的Web应用开发方式。通过实践简单的例子,如创建控制器、处理HTTP请求、返回视图,可以快速上手并深入了解其工作...

    基于注解Spring MVC环境搭建

    2. **注解驱动开发** 在传统的Spring MVC中,我们需要XML配置文件来定义bean和它们之间的依赖关系。然而,通过使用注解,我们可以减少或消除XML配置,使得代码更简洁、可读性更强。常见的注解包括`@Controller`,`@...

    基于注解的spring mvc

    本节将深入探讨Spring MVC的注解驱动机制、基础配置以及控制器的返回值分析。 首先,让我们来看看Spring MVC的基本配置。在Web.xml文件中,我们需要设置几个关键的元素来启动Spring MVC的应用: 1. `...

    使用 Spring 2.5 基于注解驱动的 Spring MVC.doc

    总的来说,Spring 2.5的注解驱动Spring MVC使得代码更加简洁,降低了维护成本,并提高了开发效率。随着Spring框架的不断发展,注解驱动的编程模型已成为主流,它简化了配置,增强了可读性和可测试性,极大地推动了...

    基于注解驱动的 Spring MVC

    接下来,我们深入理解 Spring MVC 中的注解驱动配置: 1. **@Autowired** 注解:在 BbtForumController 类中,我们看到了 @Autowired 注解用于注入 BbtForumService 实例。这是 Spring 自动装配依赖的一种方式,它...

    使用 Spring 2.5 基于注解驱动的 Spring MVC

    ### 使用 Spring 2.5 基于注解驱动的 Spring MVC #### 概述与背景 自从Spring 2.0版本对Spring MVC框架进行了重大升级之后,Spring 2.5再次对该框架进行了显著改进,引入了注解驱动的功能。这使得开发人员能够更加...

    基于注解的Spring MVC demo

    【基于注解的Spring MVC demo】是一个用于演示和学习如何在Spring MVC框架中使用注解进行Web应用开发的实例。...通过逐步学习和实践,你将能够掌握Spring MVC的注解驱动开发,从而提升你的Web应用开发能力。

    Spring 2.5 基于注解驱动的Spring MVC

    Spring 2.5的注解驱动Spring MVC极大地简化了框架的配置和使用,使得开发人员可以更专注于业务逻辑,而不是繁琐的配置工作。这种面向切面编程(AOP)的特性,以及对注解的广泛支持,使得Spring MVC成为了一个更加...

    Spring@mvc.rar_java 注解_spring mvc

    1. **注解驱动的Spring MVC** 在传统的Spring MVC应用中,我们需要编写XML配置文件来声明控制器、服务层和数据访问层等组件。然而,通过使用注解,我们可以直接在类和方法级别声明这些组件,大大减少了配置文件的...

    基于注解的Spring MVC小demo

    本demo展示了如何使用注解驱动的方式来构建一个简单的Spring MVC应用程序。注解使得代码更加简洁,减少了XML配置文件的工作量,提高了开发效率。 首先,我们需要了解Spring MVC的核心概念: 1. **...

    Spring 2.5 基于注解驱动的 Spring MVC.docx

    ler 主要是处理 HTTP 请求,所以 @Controller 更具针对性,它标识了一个类作为 Spring MVC 的控制器。... ...随着 Spring 框架的不断发展,注解驱动的编程模式已经成为现代 Java Web 开发的标准实践。

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。

    Spring MVC jar包

    - **注解驱动开发**:2.5.6版本已经支持注解驱动,如@Controller、@RequestMapping、@RequestParam等,使得代码更简洁。 - **AOP集成**:Spring MVC与Spring的面向切面编程(AOP)无缝集成,可以方便地实现事务...

    基于注解的Spring mvc增删改DEMO

    这些库使得我们可以利用注解驱动的方式,轻松地实现基于Spring MVC的增删改功能。 总之,基于注解的Spring MVC提供了一种高效、简洁的方式来构建Web应用,尤其是在处理CRUD操作时。通过合理使用各种注解,可以极大...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在这个视频教程中,你可能将学习到如何配置Spring的XML上下文文件以启用注解驱动的配置,如何在Spring MVC中创建注解式的控制器并处理HTTP请求,以及如何通过Hibernate的注解来设计数据模型并执行CRUD操作。...

    spring的mvc,注解驱动

    在Spring MVC中,注解驱动的开发模式极大地简化了Web应用的开发流程,使得开发者可以更加专注于业务逻辑,而不需要过多地关注底层的配置。下面我们将详细探讨Spring MVC中的注解驱动开发及其相关知识点。 1. **@...

Global site tag (gtag.js) - Google Analytics