小第刚学struts2.0,在研究一个别人写的小项目。当我新建一个jsp时,只要用到struts2.0的任何标签,这个就不能直接访问到
比如
<%@page contentType="text/html"%>  
<%@page pageEncoding="UTF-8"%>  
<%@ taglib prefix="s" uri="/struts-tags" %>  
<html>  
    <head>    
      <title>test</title>  
    </head>    
    <body>    
      <s:label>  
         <tr>  
          <td>test  </td>  
         </tr>      
      </s:label>     
    </body>  
</html>  输入:http://localhost:8080/portal/test.jsp就不能显示该页面,有异常。但是如果这个页面不用2.0标签就能显示正常。
=========================================
后来我另建了一个页面test2.jsp
只有一个链接
<a href="<%=request.getContextPath()%>/u/test.p">转到test.jsp页面</a>
这个链接先到Action,在有result转到这个页面
配置中我是这样写的
<package name="user" extends="struts-default">  
<action name="test">  
<result>/test.jsp </result>  
</action>  
</package>
  
这时输入http://localhost:8080/portal/test.p就能访问test.jsp页面,当然了,test.jsp页面使用了2.0标签,不使用也当然是可以的。所以请问,为什么我不能直接访问呢?
刚有为朋友看过我的贴子了,是我说的不够清楚,又从发了一份。不好意思啊。如果在的话还请你在帮小弟瞧瞧,谢谢

解决方案 »

  1.   

    更改下小第刚学struts2.0,在研究一个别人写的小项目。当我新建一个jsp时,只要用到struts2.0的任何标签,这个就不能直接访问到 
    比如 
    <%@page contentType="text/html"%>   
    <%@page pageEncoding="UTF-8"%>   
    <%@ taglib prefix="s" uri="/struts-tags" %>   
    <html>   
         <head>     
           <title>test </title>   
         </head>     
         <body>     
           <s:label>   
              <tr>   
               <td>test   </td>   
              </tr>       
           </s:label>      
         </body>   
    </html>   输入:http://localhost:8080/portal/test.jsp就不能显示该页面,有异常。但是如果这个页面不用2.0标签就能显示正常。 
    ========================================= 
    后来我另建了一个页面test2.jsp 
    只有一个链接 
    <a href=" <%=request.getContextPath()%>/test.p">转到test.jsp页面 </a> 
    这个链接先到Action,在有result转到这个页面 
    配置中我是这样写的 
    <package name="user" extends="struts-default">   
    <action name="test">   
    <result>/test.jsp  </result>   
    </action>   
    </package> 
       
    这时输入http://localhost:8080/portal/test.p就能访问test.jsp页面,当然了,test.jsp页面使用了2.0标签,不使用也当然是可以的。 
    所以请问,为什么我不能直接访问呢? 
    刚有为朋友看过我的贴子了,是我说的不够清楚,又从发了一份。不好意思啊。如果在的话还请你在帮小弟瞧瞧,谢谢 
      

  2.   

    应该是标签的问题,我虽然研究过struts2,但是感觉struts2的标签虽然好用,但是在页面方面还不如用html标签,而且他的逻辑标签等等虽然也不错,但是用jstl标签不是更好,我感觉两者没有什么差别
      

  3.   

    标签还没学过
    <s:label>会不会是<s:tabel>阿
    我去翻下书看看
      

  4.   

    <s:label>这个标签是自定义的?俺的书上没找到<s:label>也没找到<s:tabel> 哈哈
      

  5.   

    struts2.0没有用过不过通过Action进入可以使用页面,那么我猜可能你的<s:label>标签需要传递一定的对象参数,如maping、request、form、response什么的,进入action后会初始化这些对象,那么这个时候使用<s:label>标签能够获得某对象进行处理,或者你的配置有问题,建议你贴出异常信息!
      

  6.   

    首次我在此感谢各位的热心指教
    其次我想在清除声明下的我的问题
    1:我的test.jsp测试页面是在别的项目添加的
    2:test.jsp
    <%@ page language="java"  pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
      <head> <title>login</title></head>
    <body>
           this is my test jsp page!<br>      
          <s:textfield name="username" label="姓名"  ></s:textfield>           
    </body>
    </html>3:正常输入http://localhost:8080/portal/test.jsp不能显示页面。错误信息严重: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:58)
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:54)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:49)
    at org.apache.jsp.test_jsp._jspx_meth_s_005ftextfield_005f0(test_jsp.java:98)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:67)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    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:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)4:在struts.xml中配置了
    <package name="test" extends="struts-default" namespace="/u">
       <action name="test">
         <result>/test.jsp</result>
       action>
    </package>
    输入http://localhost:8080/portal/test.jsp仍然不能显示页面
    输入http://localhost:8080/portal/u/test.p页面正常显示5:我就纳闷了,我自己建的任何练习项目中没这种情况发生。不知道它这个项目中配置了什么,还是另有玄机。
      

  7.   

    首次我在此感谢各位的热心指教 
    其次我想在清楚声明下的我的问题 

    1:我的test.jsp测试页面是在别人的项目添加的 
    2:test.jsp 
    <%@ page language="java"  pageEncoding="utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags"%> 
    <html> 
       <head>  <title>login </title> </head> 
    <body> 
           this is my test jsp page! <br>       
           <s:textfield name="username" label="姓名"  > </s:textfield>            
    </body> 
    </html> 3:正常输入http://localhost:8080/portal/test.jsp不能显示页面。错误信息 严重: Servlet.service() for servlet jsp threw exception 
    java.lang.NullPointerException 
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:58) 
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:54) 
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:49) 
    at org.apache.jsp.test_jsp._jspx_meth_s_005ftextfield_005f0(test_jsp.java:98) 
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:67) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    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:175) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    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:286) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Thread.java:619) 4:在struts.xml中配置了 
    <package name="test" extends="struts-default" namespace="/u"> 
        <action name="test"> 
          <result>/test.jsp </result> 
       action> 
    </package> 
    输入http://localhost:8080/portal/test.jsp仍然不能显示页面 
    输入http://localhost:8080/portal/u/test.p页面正常显示 5:我就纳闷了,我自己建的任何练习项目中没这种情况发生。不知道它这个项目中配置了什么,还是另有玄机。 
     
     
     
      

  8.   

    直接访问/test.jsp 是不经过struts拦截器的,没法解析struts标签阿