SpringMvc学习文档.docx

上传人:b****5 文档编号:6401227 上传时间:2023-01-06 格式:DOCX 页数:38 大小:106.90KB
下载 相关 举报
SpringMvc学习文档.docx_第1页
第1页 / 共38页
SpringMvc学习文档.docx_第2页
第2页 / 共38页
SpringMvc学习文档.docx_第3页
第3页 / 共38页
SpringMvc学习文档.docx_第4页
第4页 / 共38页
SpringMvc学习文档.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

SpringMvc学习文档.docx

《SpringMvc学习文档.docx》由会员分享,可在线阅读,更多相关《SpringMvc学习文档.docx(38页珍藏版)》请在冰豆网上搜索。

SpringMvc学习文档.docx

SpringMvc学习文档

SpringMvc

DispatcherServlet核心控制器

Controller控制器

Handler处理器

1.搭建SpringMvc(了解)

1.将相关jar包导入项目

2.配置web.xml文件

--

如果你要使用SpringMvc的话

1.需要配置核心控制器

默认加载/WEB-INF/servlet名字-servlet.xml

加载过程:

1.tomcat启动,加载web.xml文件

2.加载核心控制器

2.1.会为核心控制器中的一个变量赋值

3.根据所配置的路径加载SpringMvc主配置文件

3.1.加载SpringMvc主配置文件

-->

dispatcher

org.springframework.web.servlet.DispatcherServlet

--

初始化参数

-->

--

不要修改!

指定SpringMvc主配置文件存放的路径

告诉SpringMvc去哪加载配置文件

-->

contextConfigLocation

--

具体路径

classpath表示src

-->

classpath:

springMvc.xml

--加载顺序tomcat启动时自动加载数字越小越优先加载-->

1

--为核心控制器配置访问路径-->

dispatcher

/

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf-8

CharacterEncodingFilter

/*

3.配置SpringMvc主配置文件

--

自动扫描

Ioc容器

base-package写的一个包的路径

会去扫描路径下的所有类

扫描的作用:

会将所有带注解的类,装进ioc容器

service,compent,Repository,controller

作用:

能够让带有controller注解的类被扫描到,并且存入容器,

让其生效

生效:

controller可以进行工作(接收和处理http请求)

-->

component-scan

base-package="com.controller"/>

4.创建一个包com.controller,在包下创建一个类

类定义处要增加@Controller注解

5.类中新增一个方法作为处理器

6.为处理器映射访问路径,使用@RequestMapping()

2.@Controller注解(重要)

/**

*controller注解

*1.注解需要写在类定义处

*2.让一个类变成控制器

*@authormuty

*

*/

@Controller

@RequestMapping("/my")

publicclassMyController{

}

3.@RequestMapping注解(重要)

/**

*创建一个Handler

*控制器是一个java类

*处理器是一个java方法

*一个类中有多个java方法

*一个控制器中有多个处理器

*处理请求的是Handler

*和Servlet一样,需要设置一个访问路径,不然无法接受请求

*在方法定义处增加@RequestMapping可为处理器设置访问路径

*注意:

1.访问路径的设置一般是与方法名一致

*2.斜杠/如果你的方法路径没有以斜杠开头,他会自动加上一个斜杠

*如何访问:

localhost:

端口号/项目名/Handler访问路径

*/

@RequestMapping("/helloSpringMvc")

publicvoidhelloSpringMvc(){

System.out.println("这是第一个处理器");

}

4.Handler返回JSP(重要)

1.在SpringMvc主配置文件中,配置视图解析器

--视图解析器-->

--

前缀指定的是JSP页面存放的位置

只有存放在这个位置的JSP文件,Handler才能返回

-->

--后缀指定的是视图的类型-->

2.让Handler方法的返回值为String

/**

*如果要让一个Handler返回到JSP的话,那么方法的返回值为String

*要返回某一个JSP,方法的返回值直接写JSP的文件名字,不需要写后缀名

*前缀+方法返回值+后缀=页面路径

*/WEB-INF/jsp/+hello+.jsp

*默认是以转发方法进行跳转(request)

*@return

*/

@RequestMapping("/testPage")

publicStringtestPage(){

return"hello";

}

 

5.设置请求方式(了解)

/**

*为Handler设置请求方式

*如果为Handler设置了请求方式以后,那么只支持这一种请求方式

*其他任何请求方式都访问不到

*@return

*/

@RequestMapping(value="/testMethod"

method=RequestMethod.POST)

publicStringtestMethod(){

return"hello";

}

6.@RequestParam注解(重要)

/**

*@RequestParam可以接收请求参数

*传递参数方式:

*1.a标签访问路径?

id=123request.getParameter(参数名)

*2.form表单提交在form表单中有name属性的元素会被提交

*场景:

*假设有一个a标签将要请求到这个Handler并且携带两个参数

*一个参数名字为id一个参数名字为name

*http:

//localhost:

8080/SpringMvc_01/my/testParam

*?

id=123&name=张三

*用法:

*1.注解要写在方法的入参处

*Stringid=request.getParameter("id")-->String

*value属性的就是指定参数的名字

*可以省略

*2.如果不写required属性,默认为true,请求时参数必须传递,否则报400错误

*3.defaultValue如果参数值为空的话(空字符串情况除外),那么默认值将生效

*/

@RequestMapping("/testParam")

publicStringtestParam

(@RequestParam(value="id")Integerid,

@RequestParam(value="name",

required=false,defaultValue="无名")Stringname){

System.out.println(id);

System.out.println(name);

return"hello";

}

7.用实体类接收请求参数(重要)

/**

*用实体类接收请求参数

*场景:

*新增学生输入学生名字,年龄,性别,地址

*form表单提交

*request.getParameter()

*....

*使用实体类进行写入数据

*Stustu=newStu();

*stu.setXXX();

*....

*用法:

*1.在Handler方法的入参处传入实体类

*2.需要将参数名与实体类中的属性名字对应(一模一样,区分大小写)

*会将参数值自动绑定到实体类的属性上

*XXX?

stuName=张三&age=25

*

*

*

*submit

*

*/

@RequestMapping("/testParamBean")

publicStringtestParamBean(StuModelstuModel){

System.out.println(stuModel);

return"";

}

age=26&sex=男">

a标签传参用实体类接收

--form表单提交用实体类接收-->

8.设置请求时的编码方式(了解)

在web.xml文件中增加配置

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf-8

CharacterEncodingFilter

/*

9.使用ServletApi(重要)

/**

*在Handler中使用ServletAPI

*场景:

*a标签--查询所有学生

*向Servlet发起请求

*1.到数据库查询所有学生--List<实体类>

*2.将数据集合传递到JSPrequest.setAttribute()

*3.使用转发的形式跳转到列表页面的JSP

*4.JSTL进行循环显示数据

forEach>

*列表页面

*用法:

*1.如果需要使用request对象或者response对象或者其他Servlet对象

*那么只需要在Handler方法的入参处传递即可

*注意:

*不要使用request进行跳转*****

*/

@RequestMapping("/testServlet")

publicStringtestServlet(HttpServletRequestrequest,

HttpSessionsession){

request.setAttribute("name","张三");

session.setAttribute("age",25);

return"hello";

}

HelloSpringMvc

request中的属性${name}

session中的属性${age}

10.Ant风格访问路径的映射(了解)

/**

*Ant风格的访问路径映射

*通配符方式

*用法:

*1.一个星号

*星号代表可以匹配任意长度的任意字符

*/test/1123123123/test/7656215371

*只能向下匹配一级的路径

*/test/

*/

@RequestMapping("/test/*")

publicStringtestAnt(){

return"hello";

}

/**

*2.两个星号两个星号在一起

*可以匹配任意路径

*无限级

*/test/asd/s/dd/asd/asd/2/eas/da/sda/ds/asd/sa

*

*/test/123

*/

@RequestMapping("/test/**")

publicStringtestAnt1(){

System.out.println("testAnt1");

return"hello";

}

/**

*3.问号(占位符)?

*一个问号只能替换成一个字符

*/test/a1b2

*

*/

@RequestMapping("/test/a?

b?

")

publicStringtestAnt2(){

System.out.println("testAnt2");

return"hello";

}

11.@ModelAttribute注解(熟悉)

/**

*ModelAttribute注解

*用法:

*1.写在参数上,要求参数必须是实体类类型

*Handler会将实体类类型的参数自动存入request

*key是参数的类名首字母小写

*request.setAttribute(key,value)

*${stuModel.stuName}

*不写注解request.setAttribute("stuModel",stuModel);

*写了注解request.setAttribute("stu",stuModel);

*注意:

*1.如果手动对某个属性进行了set,那么将覆盖传递进来的值

*2.如果使用request.setAttribute()向JSP传递数据的时候

*如果key值和Handler中实体类参数类名首字母小写一样

*如果与@ModelAttribute注解中显式指定的值一样

*会被覆盖

*/

@RequestMapping("/testModel")

publicStringtestModel

(@ModelAttribute("stu")StuModelstuModel,

HttpServletRequestrequest){

System.out.println(stuModel.getAddress());

//JSP传递了一个idHandler我用实体类来接收id修改Stu

/**

*handler(Stustu,request){

*根据id查询

*将查到的数据传递到jsp

*request.set...(stu,"stu");

*}

*/

//StuModelstu1=newStuModel();

//stu1.setStuName("李四");

//stu1.setAge(99);

//request.setAttribute("stu",stu1);

//stuModel.setAge(null);

return"hello";

}

/**

*用法2:

*将注解写在方法定义处

*会将方法的返回值存入request

*如果访问了一个Controller中的某一个Handler的时候

*检测该Controller中是否有注解了@ModelAttribute的方法

*如果有,先执行注解了@ModelAttribute的方法,然后在执行Handler

*@return

*/

@ModelAttribute(value="stu")

publicStuModelsetStuModel(){

StuModelstuModel=newStuModel();

stuModel.setStuName("王五");

stuModel.setAddress("北京市");

returnstuModel;

}

 

12.转发和重定向(重要)

/**

*转发和重定向

*forward

*redirect

*1.在跳转时指定方式

*2.可以跳转到另外一个Handler上

*如果需要从一个处理器跳转到另外一个处理器,那么需要执行跳转方式

*如果处理器直接返回JSP,那么不需要指定方式,

*/

@RequestMapping("/forward")

publicStringforward(){

return"forward:

toPage";

}

@RequestMapping("/toPage")

publicStringtoPage(){

return"hello";

}

13.PathVariable注解(模板类型URL)(熟悉)

/**

*

*

*模板类型的URL

*参数占位符

*@PathVariable注解

*场景:

*将请求参数隐藏到访问路径中,不使用问号进行传递参数

*用法:

*接收请求参数,接收的是访问路径中的请求参数

*接收时value属性的值要和大括号中的值对应

*注意:

*不能接受form表单提交过来的参数和问号传递的参数

*{}大括号代表了这是一个参数

*访问时要将参数占位符替换为一个具体的参数值

*/testPathVariable/123

*

*/

@RequestMapping("/testPathVariable/{id}/{name}")

publicStringtestPathVariable

(@PathVariable(value="id")Integerid,

@PathVariable(value="name")Stringname){

System.out.println(id);

System.out.println(name);

return"hello";

}

14.POST请求转换(了解)

1.在web.xml中配置请求转换过滤器

--POST请求转换过滤器选择性配置如果你需要你就配置不需要就不配置-->

httpMethodFilter

org.springframework.web.filter.HiddenHttpMethodFilter

httpMethodFilter

/*

2.JSP中编写FORM表单

3.编写Handler

/**

*RestFul风格

*通过访问路径能够表达出要做的事情是什么

*将请求参数放在访问路径

*GET获取资源

*POST新增资源

*PUT更新资源

*DELETE删除资源

*两个Handler访问路径一样,但是请求方式不一样,是允许的

*场景:

*学生增删改查

*将POST请求转换为除GET类型以外的请求

*用法:

*需要在web.xml中配置转换过滤器--SpringMvc提供

*注意:

*1.要转换的请求必须是POST,GET请求不能转换

*2.在form表中需要增加一个参数,name属性必须为_method

*value是你要转换为的目标请求方式

*/

@RequestMapping(value="/stuCRUD",method=RequestMethod.GET)

publicStringselectStu(){

System.out.printl

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

当前位置:首页 > 工程科技 > 能源化工

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

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