SpringMVC课堂笔记Word文件下载.docx
《SpringMVC课堂笔记Word文件下载.docx》由会员分享,可在线阅读,更多相关《SpringMVC课堂笔记Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
return"
itemList"
;
}
2.2List类型的绑定
基于批量修改商品操作完成参数传递。
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("
);
returnmav;
}
5.1.2配置异常处理器
5.1.3测试访问queryVoid.action
5.1.4更智能、更友好的提示,解决方案
5.1.4.1新建自定义异常类
*自定义异常
publicclassMyExceptionextendsException{
//错误消息
privateStringmsg;
publicMyException(){
super();
publicMyException(Stringmsg){
this.msg=msg;
publicStringgetMsg(){
returnmsg;
publicvoidsetMsg(Stringmsg){
5.1.4.2修改异常处理器,加上异常判断
5.1.4.3测试访问queryVoid.action
6图片上传处理
6.1配置虚拟目录
6.2加入上传功能需要的jar包
6.3配置多媒体解析器
<
!
--配置多媒体处理器-->
<
--注意:
这里id必须填写:
multipartResolver-->
beanid="
multipartResolver"
class="
mons.CommonsMultipartResolver"
>
<
--最大上传文件大小-->
propertyname="
maxUploadSize"
value="
8388608"
/>
/bean>
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);
"
修改商品成功"
itemEdit"
7json数据交互
7.1加入jar包
7.2编码
*json数据交互演示
*
*@paramitem2
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
//RESTful风格url上的参数通过{}点位符绑定
//点位符参数名与方法参数名不一致时,通过@PathVariable绑定
/item/{id}"
publicStringtestRest(@PathVariable("
id"
)Integerids,Modelmodel){
Itemitem=itemServices.getItemById(ids);
8.2测试
测试直接访问url{http:
//localhost:
8080/项目名/item/1.action}即可。
9拦截器
9.1拦截器开发流程
9.1.1创建拦截器
9.1.1.1一号拦截器
*自定义拦截器
publicclassMyInterceptor1implementsHandlerInterceptor{
//在Controller方法执行后被执行
//处理异常、记录日志
publicvoidafterCompletion(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3)
throwsException{
MyInterceptor1.afterCompletion....."
//在Controller方法执行后,返回ModelAndView之前被执行
//设置或者清理页面共用参数等等
publicvoidpostHandle(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,ModelAndViewarg3)
MyInterceptor1.postHandle....."
//在Controller方法执行前被执行
//登录拦截、权限认证等等
publicbooleanpreHandle(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2)throwsException{
MyInterceptor1.preHandle....."
//返回true放行,false拦截
returntrue;
9.1.1.2二号拦截器,复制一号,修改一下系统输出消息
9.1.2配置拦截器
--拦截器定义-->
mvc:
interceptors>
--定义一个拦截器-->
interceptor>
<
--path配置<
/**>
拦截所有请求,包括二级以上目录,<
/*>
拦截所有请求,不包括二级以上目录-->
mappingpath="
/**"
/>
beanclass="
com.itheima.springmvc.interceptor.MyInterceptor1"
/mvc:
com.itheima.springmvc.interceptor.MyInterceptor2"
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"
html>
head>
metahttp-equiv="
Content-Type"
content="
title>
用户登录<
/title>
/head>
body>
formaction="
${pageContext.request.contextPath}/user/login.action"
用户名:
inputtype="
text"
name="
username"
br>
密码:
password"
submit"
/form>
/body>
/html>
9.2.3UserController
*登录拦截器
@Controller
@RequestMapping("
user"
publicclassUserController{
/**
*跳转登录页面
toLogin"
publicStringtoLogin(){
login"
*用户登录
publicStringlogin(Stringusername,Stringpassword,HttpSessionsession){
Stringresult="
//断定用户是否允许登录
if(username!
=null){
session.setAttribute("
username);
//登录成功,跳转商品列表
result="
redirect:
/itemList.action"
returnresult;
9.2.4LoginInterceptor拦截器编码
这里省略类声名和其它两个方法。
//处理执行前被执行
//登录拦截、权限验证
publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objectarg2)throwsException{
Objectattribute=request.getSession().getAttribute("
if(attribute!
//放行,执行处理器
returntrue;
}else{
response.sendRedirect(request.getContextPath()+"
/user/tologin.action"
returnfalse;
9.2.5拦截器配置
--登录拦截器-->
--配置不拦截请求的地址-->
--<
exclude-mappingpath="
/user/toLogin.action"
/user/login.action"
-->
/user/*"
com.itheima.springmvc.interceptor.LoginInterceptor"