1. java问题: 在过滤器filter中如何获得spring容器里的对象
WebApplicationContext wac =
WebApplicationContextUtils.(getServletContext());
有WebApplicationContext 了对象了 spring托管的所有对象都可以拿到了。
当然不推荐这种方式,一般是注入的方式,特殊情况下(像你这种情况)这么用。
然后调用 wac.getBean(“beanid”);
2. 如何在过滤器Filter.java中获取jsp页面文本框的值
1、在Jsp页面将文本框输入域放在html表单form之中提交
2、后台定义一个过滤器继承Filter.java
3、在过滤器中的doFilter方法中,将参数ServletRequest转化为HttpServletRequest
4、利用HttpServletRequest.getParameter();方法即可获取对应输入域的value值。
示例:
在Jsp页面:
<form>
<input type="text" name="username" value="zhangsan"/>
</form>
后台过滤器:
public class TestFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filter) throws IOException, ServletException {
HttpServletRequest res = (HttpServletRequest) request;
//获取页面的username输入框的值
String username = request.getParameter("username");
return;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
3. java filter过滤器中怎么使用注解
@WebFilter
4. 如何在Java Filter 中注入 Service
0
既然你要需要统计网站流量数据,使用filter,而这个filter使用了一个Service,肯定是是用其一个方法。
照这么看着,我看根本不需要这个filter,在调用这个方法之前使用一个拦截器,亦称spring方法拦截器。在这个拦截器中的继承方法中统计网站流量数据。
==================================================
或者:用 硬编码 在Filter里 new 一个 Service 了出来
5. filter过滤器如何获得值
按你的配置,<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filter机制就是过滤所有的请求,你的loginservlet请求处理前,肯定先经过过滤器的处理,str当然输出时null。
解决方法:
修改url-pattern,不拦截loginservlet;
或者:重写doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2)方法,
在if--else逻辑中,注意在合适的位置调用 arg2.doFilter(arg0, arg1)方法允许loginservlet请求正常执行,过滤其他请求。
6. Java 注解的读取注解信息的方法
属于重点,在系统中用到注解权限时非常有用,可以精确控制权限的粒度
注意:要想使用反射去读取注解,必须将Retention的值选为Runtime Java代码importjava.lang.annotation.Annotation;importjava.lang.reflect.Method;//读取注解信息{publicstaticvoidmain(String[]args)throwsException{//测试AnnotationTest类,得到此类的类对象Classc=Class.forName(com.iwtxokhtd.annotation.AnnotationTest);//获取该类所有声明的方法Method[]methods=c.getDeclaredMethods();//声明注解集合Annotation[]annotations;//遍历所有的方法得到各方法上面的注解信息for(Methodmethod:methods){//获取每个方法上面所声明的所有注解信息annotations=method.getDeclaredAnnotations();//再遍历所有的注解,打印其基本信息System.out.println(method.getName());for(Annotationan:annotations){System.out.println(方法名为:+method.getName()+其上面的注解为:+an.annotationType().getSimpleName());Method[]meths=an.annotationType().getDeclaredMethods();//遍历每个注解的所有变量for(Methodmeth:meths){System.out.println(注解的变量名为:+meth.getName());}}}}}
7. 过滤器的注解配置问题
1、通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况)
2、通过注解@WebFilter的方式
通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序:
8. springmvc怎么自定义过滤器放行ws请求
1、创建自定义组件 ,创建拦截器获得所有注解。
2、然后创建和修改注解数据,在自定义组件实现权限控制。
3、不过目前一般采用第三方组件来实现权限
9. spring在filter里面怎么获取注解方式定义的bean
1使用ApplicationContextAware实现类获取
/**
* 获取applicationContext
*/
@Service
public class ApplicationContextSupport implements ApplicationContextAware{
/**
* Spring 文实体.
*/
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// TODO Auto-generated method stub
ApplicationContextSupport.applicationContext = applicationContext;
}
/**
* 根据名称实体.
*
* @param name 实体名称
* @return the bean
*/
public static Object getBean(String name)
{
return applicationContext.getBean(name);
}
/**
* 根据类型实体.
*
* @param type 实体类型
* @return the bean
*/
public static Object getBean(Class type)
{
return applicationContext.getBean(type);
}
}
2使用
(QuestionaryService) ApplicationContextSupport.getBean("questionaryServiceImpl");
-
10. 在过滤器doFilter方法里,怎么取得Spring的bean
Filter的init方法中暴露了FilterConfig接口,通过该接口可以获取回ServletContext
FilterConfig.getServletContext().
Spring web容器加载完成后,将在答ServletContext中存放ApplicationContext,以WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE为储存的Key值,所以,ServletContext.getAttribut(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)可以获取ApplicationContext