首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MVC-三(annotation)

2013-11-08 
MVC-3(annotation)1: 例子@Controller?????????????????? //——①@RequestMapping(/forum.do)public clas

MVC-3(annotation)
1: 例子

@Controller?????????????????? //<——①
@RequestMapping("/forum.do")
public class BbtForumController {

??? @Autowired
??? private BbtForumService bbtForumService;

??? @RequestMapping //<——②
??? public String listAllBoard() {
??????? bbtForumService.getAllBoard();
??????? System.out.println("call listAllBoard method.");
??????? return "listBoard";
??? }
}

?

<?xml version="1.0" encoding="UTF-8"?>
<beans
??? xmlns="http://www.springframework.org/schema/beans"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xmlns:p="http://www.springframework.org/schema/p"
??? xmlns:context="http://www.springframework.org/schema/context"
??? xsi:schemaLocation="http://www.springframework.org/schema/beans
??? http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
??? http://www.springframework.org/schema/context
??? http://www.springframework.org/schema/context/spring-context-2.5.xsd">
????
??? <!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
??? <context:component-scan base-package="com.baobaotao.web"/>

??? <!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
??? <bean
??????? p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
</beans>

2:概述

@Controller
public class BbtForumController {
??? @Autowired
??? private BbtForumService bbtForumService;

??? @RequestMapping("/listAllBoard.do") // <—— ①
??? public String listAllBoard() {
??????? bbtForumService.getAllBoard();
??????? System.out.println("call listAllBoard method.");
??????? return "listBoard";
??? }

??? @RequestMapping("/listBoardTopic.do") // <—— ②
??? public String listBoardTopic(int topicId) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("call listBoardTopic method.");
??????? return "listTopic";
??? }
}

@Controller
@RequestMapping("/bbtForum.do")? // <—— ① 指定控制器对应URL请求
public class BbtForumController {

??? @Autowired
??? private BbtForumService bbtForumService;

??? // <—— ② 如果URL请求中包括"method=listAllBoard"的参数,由本方法进行处理
??? @RequestMapping(params = "method=listAllBoard")
??? public String listAllBoard() {
??????? bbtForumService.getAllBoard();
??????? System.out.println("call listAllBoard method.");
??????? return "listBoard";
??? }

??? // <—— ③ 如果URL请求中包括"method=listBoardTopic"的参数,由本方法进行处理
??? @RequestMapping(params = "method=listBoardTopic")
??? public String listBoardTopic(int topicId) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("call listBoardTopic method.");
??????? return "listTopic";
??? }
}

@Controller
@RequestMapping("/bbtForum.do")?
public class BbtForumController {

??? @RequestMapping(params = "method=createTopic",method = RequestMethod.POST)
??? public String createTopic(){
??????? System.out.println("call createTopic method.");
??????? return "createTopic";
??? }
}

参数自动邦定

??? @RequestMapping(params = "method=listBoardTopic")
??? public String listBoardTopic(int topicId,User user) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("topicId:"+topicId);
??????? System.out.println("user:"+user);
??????? System.out.println("call listBoardTopic method.");
??????? return "listTopic";
??? }
参数通过注解邦定

@Controller
@RequestMapping("/bbtForum.do")
public class BbtForumController {

??? @RequestMapping(params = "method=listBoardTopic")
??? public String listBoardTopic(@RequestParam("id") int topicId,User user) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("topicId:"+topicId);
??????? System.out.println("user:"+user);
??????? System.out.println("call listBoardTopic method.");
??????? return "listTopic";
??? }

}

使用ModelMap(作用域同HttpServletRequest)

@RequestMapping(params = "method=listBoardTopic")
public String listBoardTopic(@RequestParam("id")int topicId,
User user,ModelMap model) {
???? bbtForumService.getBoardTopics(topicId);
???? System.out.println("topicId:" + topicId);
???? System.out.println("user:" + user);
???? //① 将user对象以currUser为键放入到model中
???? model.addAttribute("currUser",user);
???? return "listTopic";
}

将ModelMap参数放入Session中

@Controller
@RequestMapping("/bbtForum.do")
@SessionAttributes("currUser") //①将ModelMap中属性名为currUser的属性
//放到Session属性列表中,以便这个属性可以跨请求访问
public class BbtForumController {

??? @RequestMapping(params = "method=listBoardTopic")
??? public String listBoardTopic(@RequestParam("id")int topicId, User user,
ModelMap model) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("topicId:" + topicId);
??????? System.out.println("user:" + user);
??????? model.addAttribute("currUser",user); //②向ModelMap中添加一个属性
??????? return "listTopic";
??? }

}
SessionAttributes 注解介绍

@SessionAttributes("currUser")

@SessionAttributes({“attr1”,”attr2”})

@SessionAttributes(types = User.class)

@SessionAttributes(types = {User.class,Dept.class})

@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})

ModelMap里面的属性邦定到方法入参

@Controller
@RequestMapping("/bbtForum.do")
@SessionAttributes("currUser") //①让ModelMap的currUser属性拥有session级作用域
public class BbtForumController {

??? @Autowired
private BbtForumService bbtForumService;

??? @RequestMapping(params = "method=listBoardTopic")
??? public String listBoardTopic(@RequestParam("id")int topicId, User user,
ModelMap model) {
??????? bbtForumService.getBoardTopics(topicId);
??????? System.out.println("topicId:" + topicId);
??????? System.out.println("user:" + user);
??????? model.addAttribute("currUser",user); //②向ModelMap中添加一个属性
??????? return "listTopic";
??? }


??? @RequestMapping(params = "method=listAllBoard")
?? //③将ModelMap中的
public String listAllBoard(@ModelAttribute("currUser") User user) {
//currUser属性绑定到user入参中。
??????? bbtForumService.getAllBoard();
??????? System.out.println("user:"+user);
??????? return "listBoard";
??? }
}

3:属性编辑器

全局

public class MyBindingInitializer implements WebBindingInitializer {

??? public void initBinder(WebDataBinder binder, WebRequest request) {
??????? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
??????? dateFormat.setLenient(false);
??????? binder.registerCustomEditor(Date.class,
??????????? new CustomDateEditor(dateFormat, false));
??????? binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
??? }

}

Controller内部

@Controller
public class MyFormController {

??? @InitBinder
??? public void initBinder(WebDataBinder binder) {
??????? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
??????? dateFormat.setLenient(false);
??????? binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
??? }
??? …
}

4:准备数据

?@Controller
@RequestMapping("/bbtForum.do")
public class BbtForumController {

??? @Autowired
??? private BbtForumService bbtForumService;

??? @ModelAttribute("items")//<——①向模型对象中添加一个名为items的属性(每次请求到来时,首先执行)
??? public List<String> populateItems() {
??????? List<String> lists = new ArrayList<String>();
??????? lists.add("item1");
??????? lists.add("item2");
??????? return lists;
??? }

??? @RequestMapping(params = "method=listAllBoard")
??? public String listAllBoard(@ModelAttribute("currUser")User user, ModelMap model) {
??????? bbtForumService.getAllBoard();
??????? //<——②在此访问模型中的items属性
??????? System.out.println("model.items:" + ((List<String>)model.get("items")).size());
??????? return "listBoard";
??? }
}

热点排行