首页 > 其他分享 >注解驱动的spring mvc(二)

注解驱动的spring mvc(二)

时间:2023-05-09 14:32:19浏览次数:42  
标签:users spring ModelMap request 视图 Controller mvc user 注解


四:视图名的确定。

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


Java代码


@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代码



@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代码



<c:forEach var="user" items="${requestScope.users}">
	${user.username }
	${user.password }
	${user.age }
</c:forEach>


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


Java代码

@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代码


@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代码


@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>

标签:users,spring,ModelMap,request,视图,Controller,mvc,user,注解
From: https://blog.51cto.com/u_16104661/6258352

相关文章

  • MySQL(二十一)MVCC多版本并发控制
    MySQL(二十一)MVCC多版本并发控制1什么是MVCCMVCC(MultiversionConcurrencyControl)多版本并发控制。即通过数据行的多个版本管理来实现数据库的并发控制,使得在InnoDB事务隔离级别下执行一致性读操作有了保障。就是为了查询一些正在被其他事务更新的值的时候,能够查到它们被更......
  • Spring Boot项目对接腾讯云COS对象存储上传文件接口
    SpringBoot项目对接腾讯云COS对象存储上传文件接口pom.xml<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.35</version></dependency>application.ymlcos:secretId:xxx......
  • Spring Boot 单体应用一键升级成 Spring Cloud Alibaba
    作者:十眠背景随着ApacheDubbo、Nacos以及SpringCloud等服务框架的流行,越来越多的企业开始采用微服务架构来构建其应用程序。微服务架构使企业能够将其应用程序拆分成多个小型服务,这些服务可以独立部署和扩展。这种架构模式也使企业更容易实现敏捷开发和持续交付,从而提高了......
  • SpringBoot的@Configuration注解
    本文主要讲述SpringBoot的@Configuration注解。一.POJO类的声明例如有两个pojo类,分别是User和PetUser类的声明如下:publicclassUser{privateStringname;privateIntegerage;publicUser(){}publicUser(Stringname,Integer......
  • Spring注解开发报错
    今天学习Spring注解开发时,又报错了报错代码Exceptioninthread“main”org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:Line6inXMLdocumentfromclasspathresource[1.xml]isinvalid;nestedexceptionisorg.xml.sax.SAXParseExceptio......
  • Springboot 项目配置 HTTPS
    生成证书输入命令keytool-genkeypair-alias"boot"-keyalg"RSA"-keystore"boot.keystore"生成完成后会提示Warning:JKS密钥库使用专用格式。建议使用"keytool-importkeystore-srckeystoreboot.keystore-destkeystoreboot.keystore-deststoretypepkc......
  • SpringBoot项目如何打包成exe应用程序?
    前言近期做了一个前后端合并的springboot项目,但是要求打包城exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑。准备准备工作:一个jar包,没有bug能正常启动的jar包exe4j,一个将jar转换成exe的工具,链接:h......
  • [NSSCTF 2022 Spring Recruit]easy C
    C的源代码,查个壳:一般都是64位,直接双击吧,换个界面,成天看IDA也不好:也是简单的一个异或加密,上个脚本就好了,不多说啥:Des='d`vxbQd'flag=''foriinDes:flag+=chr((ord(i)^2)-1)print(flag)拿到NSSCTF......
  • 解决MVC4发布在IIS7后,路径无法访问.apk文件的解决方法
    随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢?IIS服务器不能下载.apk文件的原因:iis的默认MIME类型......
  • SpringCloud Hoxton——Consul服务注册与发现
    1.开篇Consul是什么?Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务......