森然有声卡怎么录制唱歌视频视频

SpringMVC登录验证拦截器需要注意的两点 - 简书
SpringMVC登录验证拦截器需要注意的两点
在上一篇笔记的末尾提到之前实现的拦截器存在两个问题,将记录在这篇笔记中。
这两个问题分别是:
静态资源的访问问题
iframe遇见response.sendRedirect()存在的问题
1.静态资源的访问问题
如果web.xml中的配置如下:
&servlet-name&spring-mvc&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:spring-mvc.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&async-supported&true&/async-supported&
&/servlet&
&servlet-mapping&
&servlet-name&spring-mvc&/servlet-name&
&!--重点在这
拦截所有请求,被DispatcherServlet处理--&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
spring-mvc.xml的静态资源配置如下:
&!--访问静态资源--&
&mvc:default-servlet-handler /&
通过代码发现,会把所有的请求都交给DispatcherServlet处理,那么当我们访问静态文件的时候,也会被拦截器拦截,拦截器中没有对静态文件做特殊处理,所以会导致当拦截到静态资源文件return false,无法顺利进入页面。
所以简单明了的解决办法就是,只把.do或者.htm这种带有后缀的请求交给DispatcherServlet去处理,那么静态资源就会交给Web应用服务器默认的Servlet处理。
只需要做出以下修改就可以避免对静态资源的拦截:
&servlet-mapping&
&servlet-name&spring-mvc&/servlet-name&
&!--重点在这
拦截所有请求,被DispatcherServlet处理--&
&url-pattern&*.do&/url-pattern&
&/servlet-mapping&
注意:在验证此问题的时候会受到浏览器缓存的影响,所以应该清空浏览器缓存文件之后再去访问静态资源文件进行验证。
2.iframe遇见response.sendRedirect()存在的问题
当请求是从iframe区域发送的,并且未通过登录验证,此时登录界面将会显示在iframe区域内。
iframe遇见response.sendRedirect()存在的问题.png
经过一番google之后,找到的解决办法是:
response.sendRedirect("/console/login.do");
// 解决重定向登录界面在iframe页面显示不在top页面显示的问题
PrintWriter out = response.getWriter();
out.println("&html&");
out.println("&script&");
out.println("window.open('/console/login.do', '_top')");
out.println("&/script&");
out.println("&/html&");
问题虽然得到了解决,但是总感觉这种解决办法并不是特别优雅,以后如果找到更优雅的解决方案再做修改。
Java、Androidsponsored links
SpringMVC(二)——流程控制
&SpringMVC主要就是用来做流程控制的,这篇博客总结一下如何在流程控制添加Interceptor(拦截器),如何将进行流程Mapping映射解析,如何编写Controller(控制器)。
& & & & &&一,首先看一下框架中的映射解析器,用来将uri和控制器进行绑定的:
&&&&&&&&&&&&& 1,&&&SpringMVC框架的默认解析器采用是:bean的name属性名称作为URI,与控制器进行映射绑定,BeanNameUrlHandlerMapping。例如:
& & & & &&这种情况看起来是很方便的,直接将uri和类进行了绑定。但是耦合性高了些,我们一般是希望将uri和类的id进行绑定,这样方便我们后期的修改,看下边框架为我们提供的这个对象。
&&&&&&&&&&& 2,SimpleUrlHandlerMapping :通过映射关系将请求路径和控制器绑定在一起,设置更加灵活。这里看个例子:
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
& & & & &&这种方法,是将uri和类的id进行绑定,使彼此的耦合性更加低,独立性更高了。这样就将我们的映射关系和类独立开来了。当然了两个都可以,根据实际情况选择即可。这是我们两种最常用的映射解析器。
&&&&&&&&&&
& & & & &&二,Interceptor,通过编写Interceptor可以对控制器进行拦截,对框架进行功能扩展,非常实用的。看一下如何将自己写的Interceptor融入到框架中。
&&&&&&&&&& 1,自定义拦截器需要继承HandlerInterceptorAdapter父类,或者实现HandlerInterceptor接口。这里简单看一个方法前后打印系统时间的小拦截器:
&span&style="font-size:18"&&&public&class&TimeInterceptor&extends&HandlerInterceptorAdapter&{&&
&&&&&&&&@Override&&
&&&&&&&&public&void&afterCompletion(HttpServletRequest&request,&&
&&&&&&&&&&&&&&&&HttpServletResponse&response,&Object&handler,&Exception&ex)&&
&&&&&&&&&&&&&&&&throws&Exception&{&&
&&&&&&&&&&&&System.out.println("invoke&afterCompletion..."+new&Date());&&
&&&&&&&&}&&
&&&&&&&&@Override&&
&&&&&&&&public&void&postHandle(HttpServletRequest&request,&&
&&&&&&&&&&&&&&&&HttpServletResponse&response,&Object&handler,&&
&&&&&&&&&&&&&&&&ModelAndView&modelAndView)&throws&Exception&{&&
&&&&&&&&&&&&System.out.println("invoke&postHandle..."+new&Date());&&
&&&&&&&&}&&
&&&&&&&&@Override&&
&&&&&&&&public&boolean&preHandle(HttpServletRequest&request,&&
&&&&&&&&&&&&&&&&HttpServletResponse&response,&Object&handler)&throws&Exception&{&&
&&&&&&&&&&&&System.out.println("invoke&preHandle..."+new&Date());&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
& & & & & 2,当然编写了拦截器后,就需要配置到我们的配置文件SpringMVC-servlet.xml中进行声明配置:
& & & & & 3,这里还需要在SpringMVC-servlet.xml文件中配置,我们设置的拦截器对那些控制器起作用,这里声明拦截器和控制器的关系组合,利用SimpleUrlHandlerMapping进行映射的:
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
& & & & &&这样就可以起作用了,对框架的功能扩展相对来说还是比较方便的。
& & & & &&三,最后看我们的Controller控制器的编写吧,这里的Controller和Struts2里边的action是相同的,但是这里有了侵入性。一般情况下需要实现Controller接口,上一遍博客有演示,同时也可以采用继承父类的方式,这里来看几个继承不同的父类,实现不同的功能。
&&&&&&&&& 1,继承AbstractController,这个和接口差不多,需要我们重写里边的方法,主要的是,一般情况下,需要将此方法由父类的protected该外public的类型,供其他类的使用,其中方法名是固定的,我们指定路径和此类即可由框架帮助我们调其中的方法。这里不再举例。
&&&&&&&&& 2,继承MultiActionController(多动作控制器),这样我们可以增加多个方法,处理多个客户的请求,例如:
&span&style="font-size:18"&&&&&&&public&class&MultiController&extends&MultiActionController&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&public&ModelAndView&insert(HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&return&new&ModelAndView("insertSuccess");&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&public&ModelAndView&delete(HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&return&new&ModelAndView("deleteSuccess");&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
& & & & &看一下配置文件的映射编写吧:
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&
& & & & & 3,继承AbstractCommandController,指令控制器,用于获取页面的参数,将参数封装到指定的对象模型中。类似于Struts2框架的模型驱动。例如:
&span&style="font-size:18"&&&public&class&DemoController&extends&AbstractCommandController&{&&
&&&&&&&&&&
&&&&&&&&public&DemoController(){&&
&&&&&&&&&&&&this.setCommandClass(User.class);&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&@Override&&
&&&&&&&&protected&ModelAndView&handle(HttpServletRequest&request,HttpServletResponse&response,&Object&command,&BindException&errors)&&
&&&&&&&&&&&&&&&&throws&Exception&{&&
&&&&&&&&&&&&User&user&=&(User)command&;&&
&&&&&&&&&&&&System.out.println(user.getUsercode());&&
&&&&&&&&&&&&System.out.println(user.getUserpswd());&&
&&&&&&&&&&&&return&new&ModelAndView("test");&&
&&&&&&&&}&&
& & & & &&对于配置文件的映射就是类和路径的映射,这里不再赘述。这种方法就是将页面传过来的数据直接封装到了指定的对象,我们可以直接使用,非常方便。
& & & & &&综上,为SpringMVC流程控制方面的一些内容。其实任何的MVC框架都无在乎,核心控制器,映射文件,对应的action类,扩展可以通过拦截器,过滤器等。明白了大致方向,一些小的问题,我们可以通过查看API文档,那才是我们开发有力的助手!!!
Related Articlesspring配置JSON拦截器VIEW -
- ITeye技术网站
博客分类:
spring配置JSON拦截器VIEW
一、在中servlet-context.xml添加如下代码:
&!-- 使用BeanNameViewResolver 和 MappingJacksonJsonView 解析返回JSON数据 --&
&beans:bean id="jacksonJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"&
&/beans:bean&
&!--@start 自定义 JOSN VIEW
使用方法:在Controller中 ModelAndView mv = new ModelAndView("jsonView");具体见TestJsonController--&
&beans:bean id="beanNameViewResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver" &
&beans:property name="order" value="1" /&
&/beans:bean&
&beans:bean id="gsonView" class="com.gmobi.handler.GsonView" /&
&!--@end 自定义 JOSN VIEW --&
二、加入两个class:
com.gmobi.handler.GsonView.java 自定义JSON VIEW 拦截器,使用谷歌的 GSON转换数据(特性:为空的属性自动屏蔽)
com.gmobi.controller.TestJosnController.java,测试JOSN view,展示了两个拦截器的使用方法
备注:所需文件已经上传至QQ共享
&!--EndFragment--&
下载次数: 103
浏览: 77448 次
来自: 南京
如何不需要账户就能登陆啊?我这边有这个需求,不需要输入用户名和 ...
教训,我也犯了这个错
请问楼主,你的数据库连接是在业务层取得的吗?出处:http://blog.csdn.net
背景:需求是在Controller中方法没有实现时,返回模拟结果。主要用于项目初期前台跟后台的交互,Web项目就是在前台发出请求然后后台响应并返回结果。本示例利用拦截器和注解实现跳过执行方法直接返回定义结构的功能。
通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容。通过Debug注解来定义方法是否要返回StringResult中的内容。
Debug默认为TRUE
package com.tiamaes.dep.
import java.lang.annotation.D
import java.lang.annotation.ElementT
import java.lang.annotation.R
import java.lang.annotation.RetentionP
import java.lang.annotation.T
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Debug {
boolean value()
package com.tiamaes.dep.
import java.lang.annotation.D
import java.lang.annotation.ElementT
import java.lang.annotation.R
import java.lang.annotation.RetentionP
import java.lang.annotation.T
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface StringResult {
String value();
定义好注解之后写拦截器类,拦截器需要实现HandlerInterceptor
package com.tiamaes.dep.
import java.io.PrintW
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.springframework.web.method.HandlerM
import org.springframework.web.servlet.HandlerI
import org.springframework.web.servlet.ModelAndV
import com.tiamaes.dep.annotation.D
import com.tiamaes.dep.annotation.StringR
public class DebugInterceprot implements HandlerInterceptor {
private boolean debug =
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//首先判断是否是Debug模式(全局),如果否则使拦截器失效
if(!this.debug)
if(handler instanceof HandlerMethod){
HandlerMethod method = (HandlerMethod)
Debug isDebug = method.getMethodAnnotation(Debug.class);
StringResult stringResult = method.getMethodAnnotation(StringResult.class);
//如果没有@StringResult注解则跳过拦截
//判断方法上注解的Debug值,如果否则不拦截
if(stringResult==null||(isDebug !=null && isDebug.value() == false)){
//拦截方法,并将stringResult中的内容返回给前台
PrintWriter out = response.getWriter();
out.print(stringResult.value());
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
public boolean isDebug() {
public void setDebug(boolean debug) {
this.debug =
&mvc:interceptors&
&mvc:interceptor&
&mvc:mapping path=&/**&/&
&bean class=&com.tiamaes.dep.interceptor.DebugInterceprot&&
&property name=&debug& value=&true&/&
&/mvc:interceptor&
&/mvc:interceptors&Controller中的写法
package com.tiamaes.dep.system.
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.ResponseB
import com.tiamaes.dep.annotation.D
import com.tiamaes.dep.annotation.StringR
@Controller
@RequestMapping(&/test&)
public class AspectTestController {
@RequestMapping(&/1&)
@ResponseBody
//@Debug(false)
@StringResult(&Interceptor&)
public String test1(){
return &The controller request!&;
此方法可用以在控制器中的方法没有写好的时候进行前台功能的测试,思路大概如此,更加强大的功能需要各位大神们开发。这个只是我的突发奇想,并没有实际在项目中试过。如果有人在项目中试了请告诉我效果,谢谢。
如果有人用了,建议保留StringResult注解,因为这个注解可以让你知道你的方法要返回一个什么样的结果。
敏捷是一条很长的路,摸索着前进着!!
作者:jaune161 发表于 11:54:25
阅读:20 评论:0
相关 [利用 springmvc 控制] 推荐:
- CSDN博客推荐文章
背景:需求是在Controller中方法没有实现时,返回模拟结果. 主要用于项目初期前台跟后台的交互,Web项目就是在前台发出请求然后后台响应并返回结果. 本示例利用拦截器和注解实现跳过执行方法直接返回定义结构的功能.
通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容.
- 行业应用 - ITeye博客
注解式控制器详解(SpringMVC强大的数据绑定). 到目前为止,请求已经能交给我们的处理器进行处理了,接下来的事情是要进行收集数据啦,接下来我们看看我们能从请求中收集到哪些数据,如图6-11:. 1、@RequestParam绑定单个请求参数值;. 2、@PathVariable绑定URI模板变量值;.
- 企业架构 - ITeye博客
Spring MVC 的请求参数获取的几种方法. 通过@PathVariabl注解获取路径中传递参数. 用@ModelAttribute注解获取POST请求的FORM表单数据. 直接用HttpServletRequest获取. 用注解@RequestParam绑定请求参数a到变量a. 当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,.
- CSDN博客互联网推荐文章
看这篇的文章之前最好看一下上篇文章这样可以更好的理解. 整个项目的基本配置和上面差不多. 不同的是在webRoot文件夹下的js中引入jQuery.js 和ajaxfileupload.js. 如何没有这个两个js文件可以到各自的官网下载. DemoController.java
跳转到upload.jsp.
- CSDN博客互联网推荐文章
在Spring项目开发中呢,最好是搞明白原理,其次装上Spring为eclipse开发的插件,这样会大大提高开发效率,而且减少了大量信息的记忆负担. SpringIDE插件,可自行到eclipse插件库中进行下载,还有其他Spring相关的plugin可以自行研究下. 当装好这个插件之后呢,可以根据向导创建一个简单的SpringMVC项目,大量的基本信息都可以自动生成,当然了是建立在明白原理的基础上,熟练了之后再去使用插件.
- CSDN博客编程语言推荐文章
&!-- 加载所有的配置文件 --&
&context-param&. &!-- 配置Spring监听 --&
&listener&. &!-- 启动SpringMVC的注解功能,它会自动注册HandlerMapping、HandlerAdapter、ExceptionResolver的相--&.
- CSDN博客Web前端推荐文章
最近做项目用到了struts2,之前一直是用struts1和springMVC. 感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比.
Struts1官方已经停止更新,现在用的也比较少,这里主要讲一下struts2和struts1比较都有哪些不同和进步.
- ITeye博客
在网上搜索的代码 参考整理了一份. commons-fileupload.jar与commons-io-1.4.jar二个文件. 1、表单属性为: enctype=&multipart/form-data&. 2、springmvc配置. &!-- 设置上传文件的最大尺寸为10MB --&.
- 企业架构 - ITeye博客
在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制. 还是回到请求-响应,也就是解析请求体,然后返回响应报文这个最基本的Http请求过程中来.
- ITeye博客
如果只配置拦截类似于*.do格式的url,则对静态资源的访问是没有问题的,但是如果配置拦截了所有的请求(如我们上面配置的“/”),就会造成js文件、css文件、图片文件等静态资源无法访问. 一般Web应用服务器默认的Servlet名称是&default&,所以这里我们激活Tomcat的defaultServlet来处理静态文件.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。

我要回帖

更多关于 有声卡怎么录制唱歌视频 的文章

 

随机推荐