Spring MVC框架笔记.docx

上传人:b****6 文档编号:8594946 上传时间:2023-02-01 格式:DOCX 页数:15 大小:61.14KB
下载 相关 举报
Spring MVC框架笔记.docx_第1页
第1页 / 共15页
Spring MVC框架笔记.docx_第2页
第2页 / 共15页
Spring MVC框架笔记.docx_第3页
第3页 / 共15页
Spring MVC框架笔记.docx_第4页
第4页 / 共15页
Spring MVC框架笔记.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Spring MVC框架笔记.docx

《Spring MVC框架笔记.docx》由会员分享,可在线阅读,更多相关《Spring MVC框架笔记.docx(15页珍藏版)》请在冰豆网上搜索。

Spring MVC框架笔记.docx

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

dispatcher

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/config.xml

2

dispatcher

*.do

说明:

DispatcherServlet是SpringMVC中负责请求调度的核心引擎,所有的请求将由此Servlet根据配置分发至各个逻辑处理单元。

其内部同时也维护了一个ApplicationContext实例。

我们在节点中配置了名为“contextConfigLocation”的Servlet参数,此参数指定了Spring配置文件的位置“/WEB-INF/Config.xml”。

如果忽略此设定,则默认为“/WEB-INF/-servlet.xml”,其中以Servlet名替换(在当前环境下,默认值也就是“/WEB-INF/Dispatcher-servlet.xml)。

第二步:

配置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/

.jsp

--SimpleUrlHandlerMapping通过key与controller映射的,BeanNameUrlHandlerMapping通过cotroller的name(/login.do)属性-->

--RequestMapping-->

--配置多个映射-->

loginAction

---ActionDefinition-->

--搜集表单的FormBeancommandClass参数源于LoginAction的基类BaseCommandController-->

com.whl.form.LoginInfo

--view名称-->

loginfail

main

第三步:

页面

index

//.代表当前的项目路径

登录


用户名:


密码:


第四步:

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1