SpringMVC课堂笔记.docx

上传人:b****7 文档编号:11224112 上传时间:2023-02-25 格式:DOCX 页数:19 大小:1.03MB
下载 相关 举报
SpringMVC课堂笔记.docx_第1页
第1页 / 共19页
SpringMVC课堂笔记.docx_第2页
第2页 / 共19页
SpringMVC课堂笔记.docx_第3页
第3页 / 共19页
SpringMVC课堂笔记.docx_第4页
第4页 / 共19页
SpringMVC课堂笔记.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

SpringMVC课堂笔记.docx

《SpringMVC课堂笔记.docx》由会员分享,可在线阅读,更多相关《SpringMVC课堂笔记.docx(19页珍藏版)》请在冰豆网上搜索。

SpringMVC课堂笔记.docx

SpringMVC课堂笔记

1SpringMVC课堂笔记

2高级参数绑定

2.1数组类型的参数绑定

基于批量删除商品操作完成参数传递。

Jsp修改

控制器修改

/**

*包装pojo传递演示

*第二天,演示数组参数的传递与List的传递

*@paramvo

*@return

*/

@RequestMapping("queryItem")

publicStringqueryItem(QueryVovo,Integer[]ids){

System.out.println(vo);

//输出传入的数组

if(ids!

=null&&ids.length>0){

for(Integerid:

ids){

System.out.println("传入的商品列表分别为:

"+id);

}

}

return"itemList";

}

2.2List类型的绑定

基于批量修改商品操作完成参数传递。

Jsp修改

控制器修改

POJO修改

3@RequestMapping注解的使用

3.1路径映射可以是数组

3.2@RequestMapping可以加在类头部,用于目录分级管理

3.3限定请求方法

4Controller方法返回值

4.1返回ModelAndView

参考第一天内容。

4.2返回void

4.2.1request

新建msg.jsp

4.2.2response

4.3返回String

4.3.1返回视图名字,参考第一天内容

4.3.2redirect与forward

5Springmvc中异常处理

思想:

做一个全局异常处理器,处理所有没有处理过的运行时异常用于更友好地提示用户。

5.1步骤

5.1.1创建全局异常处理器

/**

*全局异常处理器

*@authorSteven

*

*/

publicclassCustomerExceptionimplementsHandlerExceptionResolver{

@Override

publicModelAndViewresolveException(HttpServletRequestrequest,HttpServletResponseresponse,Objecthanlder,

Exceptione){

//记录日志

e.printStackTrace();

//错误消息

Stringmsg="很抱歉,系统发生异常了,请联系管理员";

//响应用户错误提示

ModelAndViewmav=newModelAndView();

//返回错误消息

mav.addObject("msg",msg);

//响应错误提示页面

mav.setViewName("msg");

returnmav;

}

}

5.1.2配置异常处理器

5.1.3测试访问queryVoid.action

5.1.4更智能、更友好的提示,解决方案

5.1.4.1新建自定义异常类

/**

*自定义异常

*@authorSteven

*

*/

publicclassMyExceptionextendsException{

//错误消息

privateStringmsg;

publicMyException(){

super();

}

publicMyException(Stringmsg){

super();

this.msg=msg;

}

publicStringgetMsg(){

returnmsg;

}

publicvoidsetMsg(Stringmsg){

this.msg=msg;

}

}

5.1.4.2修改异常处理器,加上异常判断

5.1.4.3测试访问queryVoid.action

6图片上传处理

6.1配置虚拟目录

6.2加入上传功能需要的jar包

6.3配置多媒体解析器

--配置多媒体处理器-->

--注意:

这里id必须填写:

multipartResolver-->

--最大上传文件大小-->

6.4jsp修改

6.5编写图片上传处理代码

//图片上传用MultipartFile接收文件

@RequestMapping(value="updateItem",method={RequestMethod.POST,RequestMethod.GET})

publicStringupdateItem(Itemitem,Modelmodel,MultipartFilepicFile)throwsException{

//图片新名字

Stringname=UUID.randomUUID().toString();

//图片原名字

StringoldName=picFile.getOriginalFilename();

//后缀名

StringexeName=oldName.substring(oldName.lastIndexOf("."));

Filepic=newFile("D:

\\WebWork\\"+name+exeName);

//保存图片到本地磁盘

picFile.transferTo(pic);

//更新商品图片信息

item.setPic(name+exeName);

itemServices.update(item);

model.addAttribute("item",item);

model.addAttribute("msg","修改商品成功");

return"itemEdit";

}

7json数据交互

7.1加入jar包

7.2编码

/**

*json数据交互演示

*

*@paramitem2

*@return

*/

@RequestMapping("getItem")

//@ResponseBody把pojo转成json串响应用户

@ResponseBody

//@RequestBody用于接收用户传入json串转成pojo

publicItemgetItem(@RequestBodyItemitem2){

System.out.println("接收到的json商品数据为:

"+item2);

Itemitem=itemServices.getItemById(3);

returnitem;

}

7.3测试,安装google浏览器测试工具

详情可查看教案上的安装谷歌浏览器工具节点

8Springmvc实现Restful

8.1编码

/**

*RESTful风格演示

*

*@paramids

*@parammodel

*@return

*/

//RESTful风格url上的参数通过{}点位符绑定

//点位符参数名与方法参数名不一致时,通过@PathVariable绑定

@RequestMapping("/item/{id}")

publicStringtestRest(@PathVariable("id")Integerids,Modelmodel){

Itemitem=itemServices.getItemById(ids);

model.addAttribute("item",item);

return"itemEdit";

}

8.2测试

测试直接访问url{http:

//localhost:

8080/项目名/item/1.action}即可。

9拦截器

9.1拦截器开发流程

9.1.1创建拦截器

9.1.1.1一号拦截器

/**

*自定义拦截器

*@authorSteven

*

*/

publicclassMyInterceptor1implementsHandlerInterceptor{

//在Controller方法执行后被执行

//处理异常、记录日志

@Override

publicvoidafterCompletion(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3)

throwsException{

System.out.println("MyInterceptor1.afterCompletion.....");

}

//在Controller方法执行后,返回ModelAndView之前被执行

//设置或者清理页面共用参数等等

@Override

publicvoidpostHandle(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,ModelAndViewarg3)

throwsException{

System.out.println("MyInterceptor1.postHandle.....");

}

//在Controller方法执行前被执行

//登录拦截、权限认证等等

@Override

publicbooleanpreHandle(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2)throwsException{

System.out.println("MyInterceptor1.preHandle.....");

//返回true放行,false拦截

returntrue;

}

}

9.1.1.2二号拦截器,复制一号,修改一下系统输出消息

9.1.2配置拦截器

--拦截器定义-->

interceptors>

--定义一个拦截器-->

interceptor>

--path配置拦截所有请求,包括二级以上目录,拦截所有请求,不包括二级以上目录-->

mappingpath="/**"/>

interceptor>

--定义一个拦截器-->

interceptor>

--path配置拦截所有请求,包括二级以上目录,拦截所有请求,不包括二级以上目录-->

mappingpath="/**"/>

interceptor>

interceptors>

9.1.3测试流程,可参考教案

9.2拦截器案例应用,登录拦截器

9.2.1思路

1、有一个登录页面,需要写一个controller访问页面

2、登录页面有一提交表单的动作。

需要在controller中处理。

a)判断用户名密码是否正确

b)如果正确想session中写入用户信息

c)返回登录成功,或者跳转到商品列表

3、拦截器。

a)拦截用户请求,判断用户是否登录

b)如果用户已经登录。

放行

c)如果用户未登录,跳转到登录页面。

9.2.2login.jsp

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

用户登录

用户名:


密码:


9.2.3UserController

/**

*登录拦截器

*@authorSteven

*

*/

@Controller

@RequestMapping("user")

publicclassUserController{

/**

*跳转登录页面

*@return

*/

@RequestMapping("toLogin")

publicStringtoLogin(){

return"login";

}

/**

*用户登录

*@return

*/

@RequestMapping("login")

publicStringlogin(Stringusername,Stringpassword,HttpSessionsession){

Stringresult="login";

//断定用户是否允许登录

if(username!

=null){

session.setAttribute("username",username);

//登录成功,跳转商品列表

result="redirect:

/itemList.action";

}

returnresult;

}

}

9.2.4LoginInterceptor拦截器编码

这里省略类声名和其它两个方法。

//处理执行前被执行

//登录拦截、权限验证

@Override

publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objectarg2)throwsException{

Objectattribute=request.getSession().getAttribute("username");

if(attribute!

=null){

//放行,执行处理器

returntrue;

}else{

response.sendRedirect(request.getContextPath()+"/user/tologin.action");

//放行,执行处理器

returnfalse;

}

}

9.2.5拦截器配置

--登录拦截器-->

interceptor>

--path配置拦截所有请求,包括二级以上目录,拦截所有请求,不包括二级以上目录-->

mappingpath="/**"/>

--配置不拦截请求的地址-->

--

exclude-mappingpath="/user/toLogin.action"/>

exclude-mappingpath="/user/login.action"/>-->

exclude-mappingpath="/user/*"/>

interceptor>

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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