session.getattribute

注册一定要这样吗?\textcolor{green}{登录有必要这样做吗?}一个登录有必要这么做吗?我的回答:并不总是必要的\textcolor{red}{我的回答:非常必要}我的回答:非常必要
试着想想。如果一个网站能做到只要进去喜欢就行的事情,为什么还要记录?\textcolor{green}{想象一下,如果一个网站可以随便进去点个赞,为什么还要登录?}试想一下,如果一个网站可以随便进去喜欢,那该怎么办?
博主也在学舞台。如果你有问题,请告诉我。我非常感激。\textcolor{Orange}{博主们也在学习。如果发现问题,请告诉我,非常感谢}博主们也在学习。如果你发现问题,请告诉我,非常感谢。
周榜也到了26,哇(o ゜ ▽ ゜) o ☆,对了,今天的三点历会是图书馆第一\textcolor{blue}{周榜也到了26,哇(o゜▽゜)o☆,对了,今天的图书馆会是第三。

拦截器1.简介2.自定义拦截器3. 登录拦截3.1 先做一个页面3.2 登录拦截文末小惊喜1.简介

SpringMVC的处理器拦截器类似于Servlet开发中的过滤器,用于处理器的预处理和后处理。

拦截器和过滤器的区别在于拦截器对AOP思想的具体应用。

过滤器servlet规范中的一部分,任何ja web工程都可以使用在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截需要重写方法拦截器SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用拦截器只会拦问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的不需要重写方法2.自定义拦截器

——— gt;创建新的M o d u l e并添加w e b支持\ text color { oranged } {–>创建新模块并添加web支持} >创建新模块并添加web支持。

——— gt;配备w e b. x m l,APPL I C A T I O N C O N T E T X M L,添加一包C O N T r O L L E r \ text color { oranged } {->配置web.xml,applicationContext.xml,添加一包controller } >;配置web.xml、applicationContext.xml,并添加一个控制器包。

——— gt;编写测试\ text color { oranged } {->编写测试} >编写测试

@ RestControllerpublic class test controller { @ get mapping(& # 34;/t1 & # 34;)public String test(){ system . out . println(& # 34;test controller->;测试()已执行& # 34;);return & # 34好& # 34;;}}12345678在Artifact中添加lib,配置Tomcat,开始测试,证明配置了Spring。

session.getattribute

——— gt;编写拦截器\ text color { oranged } {->编写拦截器} >编写拦截器

包com . hxl . config;导入org . spring framework . web . servlet . handler ceptor;导入org . spring framework . web . servlet . modeland view;导入jax . servlet . http . http servlet request;导入jax . servlet . http . http servlet response;公共类My Interceptor Implementers Handler Interceptor {//Execute//在请求处理的方法之前返回true执行下一个拦截器//如果返回false,下一个拦截器公共布尔prehandle (http servlet请求,http servlet响应,对象处理程序)抛出exception {system。out . println(& # 34;-治疗前-& # 34;);返回true}//执行public void post handle(http servlet请求,http servlet响应,对象处理程序,modeland view modeland view)throws exception { system。out . println(& # 34;-治疗后& # 34;);dispatcherServlet处理后执行,并清理。完成后public Void(http servlet请求,http servlet响应,对象处理程序,exception ex)throws exception { system。out . println(& # 34;-清洁& # 34;);} } 123456789101111213141516171819202122232425-gt;在a p p l I C a t I o n C o n t e x t . x m l \ text color { oranged } {–>在a p p l i c a t i o n C o n t e x t. x m l中配置拦截器} >;在applicationContext.xml中配置拦截器

& lt!-关于拦截器的配置->;& ltmvc:拦截器& gt& ltmvc:拦截器& gt& lt!-/* *包括路径及其子路径–>;& lt!-/admin/*截获/admin/add等等,/admin/add/user不会被截获-& gt;& lt!-/admin/ * *截取/admin/-& gt;下的所有内容。& ltmvc:映射路径= & # 34;/**"/& gt;& lt!- bean配置是拦截器-& gt;& ltbean class = & # 34com . hxl . config . my interceptor & # 34;/& gt;& lt/MVC:interceptor & gt;& lt/MVC:interceptors & gt;我们在1234567891011面前不动。我们可以通过跑步来看效果。

那么我们用一个例子来体验一下拦截器(登录)

WEB-INF下的所有页面或资源只能通过控制器或servlet访问。

3. 登录拦截3.1 先做一个页面

——— gt;I n d e x . j s p \ text color { oranged } {-& gt;index . JSP }-gt;index.jsp

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gt$ Titlelt/title & gt;& lt/head & gt;& ltbody & gt& lta href = & # 34$ { pagecontext . request . context path }/goLogin & # 34;& gt注册

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gtTitle & lt/title & gt;& lt/head & gt;& ltbody & gt& lth1 & gt主页

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gt注册

包com . hxl . controller;导入org . spring framework . stereotype . controller;导入org . spring framework . web . bind . annotation . request mapping;导入jax . servlet . http . http session;@ controller public class log in controller { @ request mapping(& # 34;/goMain & # 34;)公共字符串goMain(){ return & # 34;main & # 34;} @ request mapping(& # 34;/goLogin & # 34;)公共字符串goLogin(){ return & # 34;登录& # 34;;} @ request mapping(& # 34;/log in & # 34;)公共字符串登录(http会话,字符串用户名,字符串密码){//记录用户身份信息system . out . println(& # 34;接收前端= = & # 34;+用户名);session . set attribute(& # 34;用户& # 34;,用户名);return & # 34main & # 34;} } 123456789101111213141516171819202122232425262728-gt;测试:\ text color { oranged } {–>测试:} >测试:

因为我们不能直接访问WEB-INF下的页面,所以我们跳转到索引中,然后请求去login.jsp。这时,如果我们在这里输入它,我们将在会话中携带帐户密码。

但是这个时候就不适合了,因为我们不用登录就可以去首页,所以需要写一个拦截器的函数。

3.2 登录拦截

——— gt;I n d e x . j s p \ text color { oranged } {-& gt;index . JSP }-gt;index.jsp

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gt$ Titlelt/title & gt;& lt/head & gt;& ltbody & gt& lta href = & # 34$ { pagecontext . request . context path }/user/goLogin & # 34;& gt注册

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gt注册

& lt%@页内容类型= & # 34;文本/html;charset = UTF-8 & # 34;language = & # 34ja & # 34% & gt& lthtml & gt& lthead & gt& lttitle & gtTitle & lt/title & gt;& lt/head & gt;& ltbody & gt& lth1 & gt主页

此时,让我们编写一个登录拦截器来确定它将在何时拦截。

包com . hxl . config;导入org . spring framework . web . servlet . handler ceptor;导入jax . servlet . http . http servlet request;导入jax . servlet . http . http servlet response;导入jax . servlet . http . http session;公共类LoginInterceptor实现handler interceptor { public boolean pre handle(http servlet request请求,HttpServletResponse响应,对象处理程序)抛出异常{ http session session = request . getsession();//Release:确定登录页面何时不释放,如果(request。getrequesturi()。包含(& # 34;戈洛金& # 34;)){返回true} if(request.getRequestURI()。包含(& # 34;登录& # 34;)){返回true}//用户已经登录,第一次登录时没有会话。if(session . get attribute(& # 34;用户& # 34;) != null){返回true}//判断在什么情况下request . getrequest dispatcher(& # 34;/we b-INF/JSP/log in . JSP & # 34;).转发(请求、响应);返回false} } 123456789101111213141516171819202122232425262728-gt;l o g I n C o n t r o l e r \ text color { oranged } {-& gt;log in controller }-gt;逻辑控制器

这里我们有一个类url,下面所有的请求都需要用/user添加。在配置拦截器的时候,我们可以添加一个,只拦截用户请求下的那些。和注销功能。

包com . hxl . controller;导入org . spring framework . stereotype . controller;导入org . spring framework . ui . model;导入org . spring framework . web . bind . annotation . request mapping;导入jax . servlet . http . http session;@ Controller @ request mapping(& # 34;/user & # 34;)公共类log in controller { @ request mapping(& # 34;/goMain & # 34;)公共字符串goMain(){ return & # 34;main & # 34;} @ request mapping(& # 34;/goLogin & # 34;)公共字符串goLogin(){ return & # 34;登录& # 34;;} @ request mapping(& # 34;/log in & # 34;)公共字符串登录(http会话,字符串用户名,字符串密码,模型型号){//记录用户身份信息system . out . println(& # 34;接收前端= = & # 34;+用户名);session . set attribute(& # 34;用户& # 34;,用户名);model . add attribute(& # 34;用户名& # 34;,用户名);return & # 34main & # 34;} @ request mapping(& # 34;/goOut & # 34;)public string out(http session){/*/Destroy,下面的good session . invalid();*///Remove session . Remove attribute(& # 34;用户& # 34;);return & # 34main & # 34;} } 1234567891011112131415161718192021222232425262728293031323334353637383940 –>;a p p l I C a t I o n C o n t e x t . x m l \ text color { oranged } {-& gt;application context . XML }-gt;应用程序上下文. xml

& lt!-关于拦截器的配置->;& ltmvc:拦截器& gt& ltmvc:拦截器& gt& lt!-/* *包括路径及其子路径–>;& lt!-/admin/*截获/admin/add等等,/admin/add/user不会被截获-& gt;& lt!-/admin/ * *截取/admin/-& gt;下的所有内容。& ltmvc:映射路径= & # 34;/**"/& gt;& lt!- bean配置是拦截器-& gt;& ltbean class = & # 34com . hxl . config . my interceptor & # 34;/& gt;& lt/MVC:interceptor & gt;& ltmvc:拦截器& gt& lt!-下面是用户的请求-& gt;& ltmvc:映射路径= & # 34;/user/* * & # 34;/& gt;& ltbean class = & # 34com . hxl . config . log in interceptor & # 34;/& gt;& lt/MVC:interceptor & gt;& lt/MVC:interceptors & gt;1234567891011121314151617 —- gt;Test \ text color { oranged } {-> Test } >测试

这时,我们启动后,如果不登录,就会被重定向到goLogin页面,然后再登录。登录后我们会跳转到主页面,主页面有注销功能。注销前,我们可以去索引页,点击首页正常跳转。如果我们注销并且会话消失,我们将跳转到登录页面。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论