新建个普通的maven项目,然后配置web.xml(配置springmvc,乱码过滤器):
然后把之前项目中的applicationContext.xml复制过来:(扫描包,静态资源过滤,json串的乱码问题解决,视图解析器)
然后创建被扫描的controller层,我们的项目就可以启动了。我们以后所有只使用springmvc框架的项目都是这个构建流程。
我们运行下我们的项目:
到此为止,说明我们的springmvc就搭建好了。
接下来我们去学习拦截器:
拦截器和过滤器是有区别的,过滤器是选择一些可以通过,一些不能通过,而拦截器是直接就都不走那个路径。
而且我们过滤器必须去执行一些固定的接口的方法:
而拦截器就不需要,自由度更高一些。
我们先去手写拦截器的3个方法:
我们主要去看它是怎么运行的。
拦截器和乱码过滤器一样都是需要在springmvc中去配置的:
这里的拦截路径 /*表示当前的某一个请求 /**表示当前的所有请求
我们现在不去改我们的controller,我们去执行一下我们的controller层的代码:
我们的项目正常运行了。但是实际开发中我们不需要在处理后和清理的时候执行拦截器,我们只要在处理前进行拦截即可,我们可以把我们的拦截器化简为:
我们只保留一个处理前的方法就可以了。
当我们这次把返回值改成false时:
再去运行一次:
我们发现我们拦截成功,我们无法执行我们的方法了。
过滤器示意图:
登录判断验证我们刚学完拦截器,为了更好的去体会拦截器,我们去写一个实际的应用。我们去做一个登录判断验证,登录成功就正常去访问,登录失败就设置拦截器去拦截它。
先创建个简易的首页:
再左一个登录页面,登录成功才能进入到首页中:
我们去写controller层:
我们现在只是创建了一个controller先看看是否可以成功跳转页面
我们完善我们的controller:
我们添加两个 方法,一个是直接访问main页面,一个是直接访问login页面,一个是在login页面登录用户名和密码后访问main页面。
我们去把jsp页面的action和controller层做一个绑定:
我们的入口页面是index.jsp所以我们在index.jsp中写连个超链地址:
我们去启动一下我们的项目:
我们记得要把拦截器return true不然我们的操作会被拦截无法正常跳转
我们先点击登录页面:
点击提交按钮:
我们通过登录的方式访问到了我们的首页。
我们在index页面直接点击首页的超链接:
我们使用拦截器就是要实现一个功能就是我们只有登录后才能进入首页,我们不能直接点击进入首页,如果直接点击进入首页,我们希望能得到一个提示语句表示我们还没有登录。
我们去写一个拦截器去拦截:
我们把我们controller的映射改变一下:
因为我们在spring文件中要配置拦截器的地址,我们不想把所有的controller都拦截,我们只想把当下的这个controller拦截,所以我们给我们这个controller配个父级地址/user。
对应的我们的前端页面也要去改动一下:
我们在spring-mvc文件中配置拦截器:
我们去启动一下我们的项目:
点击首页:
我们发现我们没有登录,所以无法访问首页页面。
登录之后可以访问。
我们去完善一下:
先改controller层:
我们去给他进行一个参数的传递。
并在前端页面首页中进行一个接收:
除了获取用户名,我们还想进行一个注销功能:
我们去controller层写一个注销的方法:
我们在Main页面去加上这个注销的超链:
我们去运行一下:
我们去点击首页:
无法访问首页页面,我们需要先去登录:
我们已经登录过了,我们的值存放在session中了,这个时候我们再想去直接访问首页:
我们也可以访问到。
但是当我们点击注销按钮时:
我们再去点击首页:
我们就无法成功登录了。因为我们把我们存放到session中的属性值删除了,现在我们的session中是空的不符合我们的判断条件:
所以就会被成功拦截到。无法访问了。
我们拦截器就两个步骤,一个是写一个类去实现拦截器接口,然后把它配置到spring文件中就行。也可以使用过滤器Filter,但是过滤器要配置在web.xml中。
文件上传和下载
这是我们springmvc的最后一部分内容了。
我们先去创建一个项目。
我们第一步是需要在maven中去加载文件上传和下载的包:
我们去写我们的前端页面:
接下来我们去编写我们的请求:
在具体写我们的请求之前,我们可以先把文件上传的配置在我们的springmvc文件中写好,这段配置代码是固定的,只要用到文件上传,这么去写就可以了:
文件上传有两种形式一般,但是这里我只使用了一个写起来代码少相对简单的方式,采用file,Transto来保存上传的文件
我们在controller中把我们的请求写一下:
我们去运行一下:
我们选择上传这个:
没有报错,我看看我们有没有上传成功:
我们发现上传成功了。
打开发现文件没有损坏。
我们把它改成@Controller,把之前的文件删除再去上传一下:
这样当我们上传成功后会再次返回到主页面
下载我们就不说了。这部分也不是很重要。
springmvc就结束了。



