Spring MVC框架笔记.docx
- 文档编号:8594946
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:15
- 大小:61.14KB
Spring MVC框架笔记.docx
《Spring MVC框架笔记.docx》由会员分享,可在线阅读,更多相关《Spring MVC框架笔记.docx(15页珍藏版)》请在冰豆网上搜索。
SpringMVC框架笔记
SpringMVC3
ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别:
DispatcherServlet所加载的applicationContext可以认为是mvc私有的context,由于保存在servletContext中的key值与通过ContextLoaderListener加载进来的applicationContext使用的key值不相同,因此如果只使用DispatcherServlet加载context的话,如果程序中有地方使用WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)来试图获取applicationContext时,就会抛出"NoWebApplicationContextfound:
noContextLoaderListenerregistered?
"的exception。
annotation-driven/> 相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。 即解决了@Controller注解的使用前提配置。 Xml与Annotation混用 对于早期使用xml配置,后续添加Annotation,只需如下操作: 一: package bookstore.config; import bookstore.dao.*; @Configuration public class MyConfig{ @Bean public UserDao userDao(){ return new UserDaoImpl(); } } 二: 启动注解配置会扫描@Configuration并且将@Bean返回IOC容器中 …… annotation-config /> beans> Controller例子: /* spring3.0Restful风格 http: //localhost: 8080/test/start.do? name=zhangsan传统风格 http: //localhost: 8080/test/start/zhangsan.doRESTFUL风格 */ @Controller //1.标记一个Controller //@RequestMapping("/user") publicclassAppController{ @Autowired@Qualifier("userService") //@Qualifier指明bean名称必须userService privateUserServiceuserService; @RequestMapping(value="/start",method=RequestMethod.GET) //get方式提交才会转到该方法 publicvoidgetstart(){ System.out.println("callgetstart"); } @RequestMapping(value="/start",method=RequestMethod.POST)//直接跳转地址该页面报错因为POST方法,只能GET方法 //POST方式提交才会转到该方法 publicvoidpoststart(){ System.out.println("callpoststart"); } @RequestMapping(value="/{birdate}") //数据绑定 publicvoidpoststart(@PathVariable("birdate")Datebirdate){ System.out.println("callpoststart"); } //第一种: 无返回参数(不返回viewname,参照@RequestMapping),返回http: //ip/项目名称/prfix/@RequestMapping([controller]+method)/suffix //方法上必须有RequestMapping,类上可以不加RequestMapping @RequestMapping(value="/novoid",method=RequestMethod.GET) //get方式提交才会转到该方法 publicvoidnoreturn(){ System.out.println("callnovoid"); } //第二种: 返回string,返回http: //ip/项目名称/prfix/返回值/suffix @RequestMapping(value="/string/{name}/{age}") publicStringreturnString(@PathVariable("name")Stringname){//此处指定名称必须与URL //变量名称{name}相同RESTFUL风格 System.out.println(name); return"stringview"; } //第三种: 返回string,返回http: //ip/项目名称/prfix/viewname/suffix @RequestMapping(value="/modandview",method=RequestMethod.GET) publicModelAndViewindex(HttpServletRequestrequest){ //ModelAndView的用法: 三种 //1用法: /* *ModelAndViewmav=newModelAndView(); *mav.setViewName("index");//要跳转到的view视图mav.addObject("msg", *"Hello,SpringMVC"); *///要传递到视图中的值(用法跟request传值相同) //2用法 /* *ModelAndViewmav=newModelAndView("index");mav.addObject("msg", *"SpringMVC");mav.addObject("Hi","Hi,Jack"); */ //3用法返回prefix(前缀)+viewname+suffix(后缀) ModelAndViewmav=newModelAndView("ModAndView","msg", "Hello,SpringMVC"); System.out.println("invoke.."); returnmav; } //第四种: 返回map,返回http: //ip/项目名称/prfix/@RequestMapping(controller+method)/suffix @RequestMapping(value="/map",method=RequestMethod.GET) publicMapmap(){ Mapmap=newHashMap(); Useruser=newUser(); user.setAge(30); user.setName("zhangsan"); map.put("hello","world"); map.put("user",user); returnmap; } //第五种: 返回modelMap,返回http: //ip/项目名称/prfix/@RequestMapping(controller+method)/suffix //展示${aa}${user.name}${user.age} @RequestMapping(value="/modelmap",method=RequestMethod.GET) publicModelMapmodelMap(){ ModelMapmodelMap=newModelMap(); Useruser=newUser(); user.setAge(20); user.setName("lisi"); modelMap.addAttribute("hello","world"); Mapmap=newHashMap(); map.put("user",user); modelMap.addAllAttributes(map); returnmodelMap; } //第五种: 返回List,返回http: //ip/项目名称/prfix/@RequestMapping(controller+method)/suffix //页面展示0: ${stringList[0]}1: ${stringList[1].name} @RequestMapping(value="/list/{id}",method=RequestMethod.GET) //{id}RESTFUL风格 publicStringlist(@PathVariable("id")intid,ModelMapmodel){//必须定义在此形参,才能在页面展现 model.put("userList",userService.listUser()); System.out.println("id: "+id); //model会在vm模版展现 return"list.vm"; } @RequestMapping(value="/add") publicStringadd(ModelMapmodel){ Useruser=newUser("lily",27); userService.addUser(user); model.put("userList",userService.listUser()); return"list.vm"; } publicvoidsetUserService(UserServiceuserService){ this.userService=userService; } } 乱码: class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 第一步: 配置web.xml 说明: DispatcherServlet是SpringMVC中负责请求调度的核心引擎,所有的请求将由此Servlet根据配置分发至各个逻辑处理单元。 其内部同时也维护了一个ApplicationContext实例。 我们在 如果忽略此设定,则默认为“/WEB-INF/ 第二步: 配置config.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http: //www.springframework.org/dtd/spring-beans-2.0.dtd"> --DefinitionofViewResolver--> --view层的类型JstlView为jsp,FreeMarker,Velocity--> org.springframework.web.servlet.view.JstlView --ViewResolver的prefix和suffix参数指定了表现层资源的前缀和后缀,运行时,Spring将为指定的表现层资源自动追加前缀和后缀,以形成一个完整的资源路径如: mav.setViewName("account/editAccount");显示/WEB-INF/jsp/account/editAccount.jsp完整路径 --> /WEB-INF/jsp/ --SimpleUrlHandlerMapping通过key与controller映射的,BeanNameUrlHandlerMapping通过cotroller的name(/login.do)属性--> --RequestMapping--> --配置多个映射--> ---ActionDefinition--> --搜集表单的FormBeancommandClass参数源于LoginAction的基类BaseCommandController--> --view名称--> 第三步: 页面 用户名: 密码: 第四步: Form表单Bean publicclassLoginInfo{ privateStringusername; privateStringpwd; publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPwd(){ returnpwd; } publicvoidsetPwd(Stringpwd){ this.pwd=pwd; } } 第五步: 编写Action publicclassLoginActionextendsSimpleFormController{ privateStringfail_view; privateStringsuccess_view; publicStringgetFail_view(){ returnfail_view; } publicvoidsetFail_view(Stringfail_view){ this.fail_view=fail_view; } publicStringgetSuccess_view(){ returnsuccess_view; } publicvoidsetSuccess_view(Stringsuccess_view){ this.success_view=success_view; } /*我们在子类中覆盖了父类的onSubmit方法;而onSubmit方法用于处理业务请求。 负责数据封装和请求分发的Dispatcher,将对传入的HttpServletRequest进行 封装,形成请求数据对象,之后根据配置文件,调用对应业务逻辑类的入口方法 (这里就是LoginAction)的onSubmit()方法,并将请求数据对象及其他相关资源引 用传入。 */ @SuppressWarnings("unchecked") @Override protectedModelAndViewonSubmit(Objectcommand)throwsException{ LoginInfologinInfo=(LoginInfo)command; if(login(loginInfo)==0){ HashMapresult_map=newHashMap(); result_map.put("logininfo",loginInfo); ListmsgList=newArrayList(); msgList.add("msg1"); msgList.add("msg2"); msgList.add("msg3"); result_map.put("messages",msgList); returnnew ModelAndView(this.getSuccess_view(),result_map); }else{ returnnewModelAndView(this.getFail_view()); } } privateintlogin(LoginInfologinInfo){ if("Erica".equalsIgnoreCase(loginInfo.getUsername()) &&"mypass".equals(loginInfo.getPwd())){ return0; } return1; } } SpringMVC几种Cotroller: 1.实现接口Controller publicinterfaceController{ ModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsException; } 2.继承AbstractCommandContro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring MVC框架笔记 MVC 框架 笔记