2012-08-07 449 views
0

我有一个使用struts2和hibernate的应用程序。限制用户访问未经授权的页面。我尝试过实施struts拦截器。但是在struts.xml文件中提到了拦截器标签后,我的java页面中的httpsession对象开始抛出java.lang.NullPointerException。我想知道是否在使用hibernate时不能使用struts拦截器?或者有没有什么叫做hibernate拦截器来实现我的目标。struts 2拦截器与hibernate拦截器不同吗?

堆栈跟踪

java.lang.NullPointerException 
    at com.uac.dao.RoleDaoImpl.listRoles(RoleDaoImpl.java:308) 
    at com.uac.biz.RoleAction.viewRoles(RoleAction.java:193) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) 
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) 
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 

struts.xml中

<interceptors> 
    <interceptor name="authentication" class="com.uac.biz.AuthenticationInterceptor"> </interceptor> 
    <interceptor-stack name="uac_auth"> 
     <interceptor-ref name="authentication" ></interceptor-ref> 
     <interceptor-ref name="defaultStack"></interceptor-ref> 
    </interceptor-stack> 
</interceptors>...... 
...................... 
<action name="addUserRedirect" class="com.uac.biz.RoleAction" method="viewRoles"> 
    <interceptor-ref name="uac_auth" /> 
    <result name="success">/addUser.jsp</result> 
</action> 

一段代码使用会话对象

roleList=new ArrayList(); 
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXX-----enterd into listRoleeees"); 
//Criteria roles=session.createCriteria(RolePojo.class); 
**Query query= session.createQuery(" from RolePojo");** 
result=roles.list(); 
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXX-----after seesion"); 
for(Iterator it=result.iterator();it.hasNext();){ 
RolePojo rolepojo=(RolePojo) it.next(); 
roleList.add(new Pojo(rolepojo.getRoleId(),rolepojo.getRoleName())); 
+1

不知道你实际做了什么,诊断是不可能的。当然,Struts 2拦截器可以在有或没有Hibernate的情况下使用。这很可能是你配置了错误的东西,或者不适当地实施了拦截器。 – 2012-08-07 13:33:15

+0

你可以发布一些代码或你的堆栈跟踪? – 2012-08-07 14:01:11

+0

嗨,我已经粘贴stacktrace,struts.xml和下面的一段代码。 Hibernate会话对象是否与拦截器一起工作? – Fayaz 2012-08-08 12:45:27

回答

-1

你可以试试Servlet Filter来过滤请求的URL

1

你当然可以一起使用Struts2和Hibernate。 Struts2拦截器是处理您正在寻找的访问安全性的好方法。

在下面链接的问题中,我提供了一个答案,应该为您提供一个如何使用拦截器来提供此功能的出发点。

Sessions in struts2 application

至于您所遇到的NullPointerException异常,你就需要提供堆栈跟踪和你的struts.xml的代码示例,其中NPE发生的Java代码。

+0

您需要粘贴到您的堆栈跟踪 – Quaternion 2012-08-08 01:54:37

+0

@Fayaz可随时编辑stackoverflow上的问题和答案以提供更多信息。请编辑你的问题,并在那里粘贴堆栈跟踪(格式很好)。就目前来看,这是完全不可读的。 – 2012-08-08 13:51:46

+0

HI史蒂文,我很抱歉...我必须这样做,因为字符限制..我发现如果我可以在一个镜头后发布...... – Fayaz 2012-08-08 18:20:10