SpringMVC框架(3)

目录

 

1.高级参数的绑定

(1)数组类型的参数绑定

(2)List类型的绑定

2.@RequestMapping注解的使用

(1)路径映射可以是数组

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

(3)限定请求方法

3.Controller方法返回值

3.SpringMVC的异常处理

(1)创建全局异常处理器

(2)配置异常处理器

(3)测试访问queryVoid.action

(1)自定义异常类

(2)修改异常处理器

(3)测试访问queryVoid.action

4、图片上传处理(要用post提交,不能用get)

(1)在tomcat中进行虚拟路径的配置(方便我们从本地拿图片)

(2)引入相关的jar包

(3)在springmvc.xml中配置多媒体解析器

(4)jsp的修改(注意图片上传的src中的虚拟路径)

(5)编写图片上传处理代码(重点)

5.JSON的数据交互

(1)加入jar包

(2)编码

6.SpringMVC实现Restful

7.拦截器

(1)创建拦截器

(2)配置拦截器

拦截器案例

8.乱码的解决


1.高级参数的绑定

(1)数组类型的参数绑定

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

这里是用CheckBox进行选择

 

(2)List类型的绑定

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

控制器

pojo

 

2.@RequestMapping注解的使用

(1)路径映射可以是数组

也就是我们可以通过多个访问路径访问

 

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

用于分目录管理的话就需要在访问路径上加上/item

 

(3)限定请求方法

这里我们可以限制提交的方式,上面写法就是post和get提交方式都可以,也是默认的方式

如果是post请求这里可以用@PostMapping来替代,还有@GetMapping,@PutMapping,@DeleteMapping

 

3.Controller方法返回值

(1)返回ModelAndView

(2)返回void

1)request

2)response

(3)返回String(也就是返回视图的名字)

 

redirect和forward

 

 

3.SpringMVC的异常处理

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

 

步骤:

(1)创建全局异常处理器

 

(2)配置异常处理器

 

(3)测试访问queryVoid.action

 

更加智能的解决方案

(1)自定义异常类

(2)修改异常处理器

 

(3)测试访问queryVoid.action

 

 

4、图片上传处理(要用post提交,不能用get)

(1)在tomcat中进行虚拟路径的配置(方便我们从本地拿图片)

eclipse中的配置

myeclipse的配置

 

(2)引入相关的jar包

 

(3)在springmvc.xml中配置多媒体解析器

 

(4)jsp的修改(注意图片上传的src中的虚拟路径)

 

(5)编写图片上传处理代码(重点)

 

 

5.JSON的数据交互

(1)加入jar包

 

(2)编码

 

 

6.SpringMVC实现Restful

编码

restful风格的需求

https://blog.csdn.net/qq_27026603/article/details/82012277

 

测试

测试直接访问url{http://localhost:8080/项目名/item/1.action}即可。

如果想要测试的时候不写action的话,也就是测试直接访问url{http://localhost:8080/项目名/item/1},那么就要在web.xml中将拦截的url-parrten中的*.action换成/,注意不能换成/*,不然jsp也会被拦截而使用不了。

 

 

7.拦截器

拦截器开发流程

(1)创建拦截器

1)一号拦截器

package com.itheima.springmvc.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 自定义拦截器
 * @author Steven
 *
 */
public class MyInterceptor implements HandlerInterceptor {

	//方法执行后被执行
	//处理异常,清资源,记录日志等等
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("MyInterceptor.afterCompletion.......");
	}

	//方法执行之后,返回ModelAndView之前被执行
	//设置页面的共用参数等等
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("MyInterceptor.postHandle.......");
	}

	//进入方法前被执行
	//登录拦截,权限验证等等
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("MyInterceptor.preHandle.......");
		//true放行,false拦截
		return true;
	}

}

 

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

package com.itheima.springmvc.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 自定义拦截器
 * @author Steven
 *
 */
public class MyInterceptor2 implements HandlerInterceptor {

	//方法执行后被执行
	//处理异常,清资源,记录日志等等
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("MyInterceptor2.afterCompletion.......");
	}

	//方法执行之后,返回ModelAndView之前被执行
	//设置页面的共用参数等等
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("MyInterceptor2.postHandle.......");
	}

	//进入方法前被执行
	//登录拦截,权限验证等等
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("MyInterceptor2.preHandle.......");
		//true放行,false拦截
		return true;
	}

}

 

(2)配置拦截器

 

 

拦截器案例

思路

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

2.登录页面有一提交表单的动作。需要在controller中处理。

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

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

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

3.拦截器

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

       2)如果用户已经登录。放行

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

 

(1) login.jsp

 

(2) UserController

 

(3) LoginInterceptor拦截器编码

 

(4) 拦截器配置

 

 

 

8.乱码的解决

乱码问题{
 提交问题{
    post乱码:过滤器解决;
    get乱码:tomcat配置 URIEncoding="utf-8"
 }

 响应乱码{
    response乱码:获取getWriter之前,response.setCharacterEncoding("utf-8");
 }
 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值