开始学SpringMVC之注解
2019-08-16 12:40:17来源:博客园 阅读 ()
开始学SpringMVC之注解
概述
SpringMVC不仅提供了Xml的配置方式,还提供了注解的方式来声明一个Controller,本文属于SpringMVC的入门级内容,仅供学习分享使用,如有不足之处,还请指正。
SpringMVC注解方式的优点
- XML配置起来有时候冗长,此时注解可能是更好的选择。
- 注解最大的好处就是简化了XML配置;其实大部分注解一定确定后很少会改变,在一些中小项目中使用注解反而提供了开发效率。
- 注解相对于XML的另一个好处是类型安全的,XML只能在运行期才能发现问题。
- 采用注解的方式,一个类可以有多个Action。
SpringMVC支持注解步骤
1. 配置dispatcher-servlet.xml文件
如下所示,主要配置注解的扫描,和支持MVC注解两项内容
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 12 <!-- 配置注解的扫描 --> 13 <context:component-scan base-package="com.hex.second"></context:component-scan> 14 <!-- 支持MVC的注解 --> 15 <mvc:annotation-driven ></mvc:annotation-driven> 16 <!-- 静态资源的支持 --> 17 <mvc:default-servlet-handler/> 18 </beans>
2. 新建一个类增加方法,并在方法上添加注解
如下所示,通过@Controller表示一个类,通过@RequestMapping("/Hello")标识一个访问请求处理方法
1 @Controller 2 //@RequestMapping("/HC") 3 public class HelloController { 4 5 /** 6 * 通过注解的方式声明Controller,不带参数 7 * @return 8 */ 9 @RequestMapping("/Hello") 10 public ModelAndView HelloMvc(){ 11 ModelAndView mav=new ModelAndView(); 12 mav.addObject("msg", "HelloWorld,HelloSpringMVC!!!"); 13 mav.setViewName("WEB-INF/jsps/HelloWorld.jsp"); 14 return mav; 15 } 16 }
3. 新增一个Jsp页面接收并显示内容
如下所示:通过${msg} 接收后台传递过来的参数
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>第一次接触SpringMVC</title> 8 </head> 9 <body> 10 <h1>欢迎信息</h1> 11 <h1>${msg}</h1> 12 </body> 13 </html>
4. 访问
打开浏览器,输入网址即可访问,如下所示:
SpringMVC接收页面传递数据的方式(前端-->后端)
1. 通过方法的参数的方式
如下所示:SpringMVC能够自动将页面传递的数据和函数的参数匹配起来;
如果是日期格式的数据,需要进行格式化
1 /** 2 * 以参数的方式传递获取页面传递过来的值 3 * @param name 4 * @param age 5 * @param date 日期格式,由客户端传递参数到服务端时,需要进行日期格式化,否则会报错 6 * 注解如下:@DateTimeFormat(pattern="yyyy-MM-dd") 7 * @return 8 */ 9 @RequestMapping("/Hello2") 10 public ModelAndView HelloMvc2(String name,int age,@DateTimeFormat(pattern="yyyy-MM-dd")Date date){ 11 System.out.println("name:"+name); 12 System.out.println("age:"+age); 13 System.out.println("date"+date); 14 ModelAndView mav=new ModelAndView(); 15 mav.addObject("name", name); 16 mav.addObject("age", age); 17 mav.addObject("date", date); 18 mav.setViewName("WEB-INF/jsps/HelloWorld2.jsp"); 19 return mav; 20 }
2. 通过对象的方式进行数据的传递
如下所示,先定义一个User类,来接收页面传递的数据,SpringMVC能自动进行匹配
1 /** 2 * 通过对象的方式接收参数,SpringMVC可以自动匹配参数到对象的属性中 3 * 方便扩展 4 * @param user 5 * @return 6 */ 7 @RequestMapping("/Hello3") 8 public ModelAndView HelloMvc3(User user){ 9 System.out.println("name:"+user.getName()); 10 System.out.println("age:"+user.getAge()); 11 System.out.println("date"+user.getDate()); 12 ModelAndView mav=new ModelAndView(); 13 mav.addObject("name", user.getName()); 14 mav.addObject("age", user.getAge()); 15 mav.addObject("date", user.getDate()); 16 mav.setViewName("WEB-INF/jsps/HelloWorld2.jsp"); 17 return mav; 18 }
Jsp页面接收如下所示:以key.property的方式获取内容
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Hello world</title> 8 </head> 9 <body> 10 <h1>欢迎信息</h1> 11 <h1>ID:${user.id}</h1> 12 <h1>姓名:${user.name}</h1> 13 <h1>年龄:${user.age}</h1> 14 <h1>时间:${user.date}</h1> 15 </body> 16 </html>
3. 通过内置对象的方式进行数据的传递
1 /** 2 * 通过内置对象HttpServletRequest来获取参数 3 * @param req 4 * @param resp 5 * @return 6 */ 7 @RequestMapping("/Hello4") 8 public ModelAndView HelloMvc4(HttpServletRequest req,HttpServletResponse resp){ 9 System.out.println("name:"+req.getParameter("name")); 10 System.out.println("age:"+req.getParameter("age")); 11 System.out.println("date"+req.getParameter("date")); 12 //往页面传递参数的一种 13 ModelAndView mav=new ModelAndView(); 14 mav.addObject("name", req.getParameter("name")); 15 mav.addObject("age", req.getParameter("age")); 16 mav.addObject("date", req.getParameter("date")); 17 mav.setViewName("WEB-INF/jsps/HelloWorld2.jsp"); 18 return mav; 19 }
SpringMVC页面接收参数的方式(后端-->前端)
1. 采用ModelAndView进行传值
如下所示:可以通过键值对的方式增加参数
1 /** 2 * 往页面传递参数 3 * @return 4 */ 5 @RequestMapping("/Hello5") 6 public ModelAndView HelloMvc5(){ 7 //往页面传递参数的一种 8 ModelAndView mav=new ModelAndView(); 9 mav.addObject("name", "张三"); 10 mav.addObject("age", 20); 11 mav.addObject("date",new Date()); 12 mav.setViewName("WEB-INF/jsps/HelloWorld2.jsp"); 13 return mav; 14 }
2. 通过Model的方式传递参数
如下所示:Model作为一个参数,可以直接新增键值对,返回一个字符串,表示页面的路径
1 /** 2 * 从后端往前端跳转,使用Model的方式传参 3 * @return 4 */ 5 @RequestMapping("/Hello6") 6 public String HelloMvc6(Model model){ 7 //往页面传递参数的一种 8 model.addAttribute("name", "张三"); 9 model.addAttribute("age", 16); 10 model.addAttribute("date", new Date()); 11 return "WEB-INF/jsps/HelloWorld2.jsp"; 12 }
3. 通过对象的方式传递参数
如下所示:将对象通过属性的方式进行传递,也需要一个key值作为标识
1 /** 2 * 采用对象的方式传参到前台 3 * @param model 4 * @return 5 */ 6 @RequestMapping("/Hello7") 7 public String HelloMvc7(Model model){ 8 //往页面传递参数的一种 9 User user=new User(1L,"李四",20,new Date()); 10 model.addAttribute("user", user); 11 //model.addAttribute(user);//不建议用这种,会有一个默认的key,是类名的首字母小写,和对象名无关 12 return "WEB-INF/jsps/HelloWorld3.jsp"; 13 }
4. 通过内置对象传递参数
如下所示:内置对象HttpServletRequest传递参数并进行跳转
1 /** 2 * 通过内置对象往页面传参并跳转,不常用 3 * @param req 4 * @param resp 5 * @throws ServletException 6 * @throws IOException 7 */ 8 @RequestMapping("/Hello8") 9 public void HelloMvc8(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{ 10 //往页面传递参数的一种 11 req.setAttribute("name", "刘玲"); 12 req.setAttribute("age", 22); 13 req.getRequestDispatcher("WEB-INF/jsps/HelloWorld2.jsp").forward(req, resp); 14 }
备注
曾以为我是那崖畔的一枝花,后来才知道,不过是人海一粒沙。
原文链接:https://www.cnblogs.com/hsiang/p/11355444.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:java io流
- Java--注解 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- Java 必须掌握的 12 种 Spring 常用注解! 2020-06-08
- JAVA自定义注解 2020-06-01
- Spring08_纯注解实战_支持事务版本 2020-05-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash