Previous
:注解驱动的spring mvc(一)
四:视图名的确定。
spring mvc可以通过可以通过多种方式确定视图名,在前面的例子中,方法无返回值,视图名更具请求参数确定。Controller方法还是返回一个String类型的值作为视图名。
@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对象,并传入方法,方法处理完成后自动传递到视图进行处理。
@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输出
<c:forEach var="user" items="${requestScope.users}">
${user.username }
${user.password }
${user.age }
</c:forEach>
还可以通过在Controller方法返回一个ModelMap对象,这种情况下,视图名由请求Url确定。
@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等特殊的参数。
@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中。
@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参数。
八:异常处理
<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
介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。
使用 Spring 2.5 基于注解驱动的 Spring MVC
详细讲解spring MVC中注解怎么使用
spring的mvc,注解驱动.适合有一定基础的人看.解决了一些常见的问题.
基于注解驱动的 Spring MVC,你还在配置实用框架,实现零配置是用spring框架。
Spring MVC是Spring框架的一个模块,专注于构建Web应用程序。作为架构师和Java开发者,深入理解Spring MVC的原理和实践应用是非常重要的。本文通过分析Spring MVC的核心组件和执行流程,提供了一个全面的学习指南。 ...
如何使用注解驱动的校验 使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 ...
SpringMVC注解驱动的控制器详解,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45562951
本课程将会以项目功能为驱动 以功能为载体依次从浅入深的讲解目前Java Web开发中使用的最新技术 课程中除了数据增删改查这种传统功能外 还涉及到权限设计 树形菜单 站内聊天 报表开发等实用的设计方法或技术实现 ...
如何使用注解驱动的校验 使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 访问数据...
自己做的Spring的MVC 入门小例子,很经典,一看就懂,包括注解驱动.
添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换、格式化、验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API
工程源码 博文链接:https://jhaij.iteye.com/blog/1175954
添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换、格式化、验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API
2.添加更多注解,可完全注解驱动 3.引入HTTP输入输出转换器(HttpMessageConverter)和数据转换、格式化、验证框架无缝集成 4.对静态资源处理提供特殊支持 5.更加灵活的控制器方法签名,可完全独立于Servlet API ...