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