@Namespace

这个标签让我很迷惑,意思我能理解,但是在使用<a href="login">登录</a>时出现了一个问题,

假如有@Namespace("/show"),在某些文件里需要加show,有些则不需要加,有点小纳闷,思考了一下,

后来翻开tomcat中的文件,验证了我的猜想:在show包中的jsp不需要加“show”,而在show外的需要加“show/”

show下的子包下的jsp,要加“../”。

总之就一句话:以当前的jsp路径往show路径走,写上相对路径

目录结构如下:

WebRoot

  |------index.jsp

  |------show

  |    |-----------check.jsp

  |    |-----------child

  |    |      |---------user.jsp

  |    |

  |-------WEB-INF

  |    |-----------classes

  |    |      |--------------com.xxx.action

  |    |      |          |-------LoginAction.java(@Namespace("/show"))

那么index.jsp请求LoginAction需要写上<a href="show/login">login</a>

check.jsp请求LoginAction需要写上<a href="login">login</a>

user.jsp请求LoginAction需要写上<a href="../login">login</a>

在tomcatworkCatalinalocalhost你的项目名orgapachejsp中会有如下文件:

jsp

 |-----index_jsp.java

 |-----index_jsp.class

 |-----show

 |   |---------LoginAction_jsp.java

 |     |---------LoginAction_jsp.class

 |   |---------check_jsp.java

 |   |---------check_jsp.class

 |     |---------child

 |   |      |-----------user_jsp.java

 |   |      |-----------user_jsp.class

当然,当你第一次请求后才会在这个文件夹里生成java和class文件,你的servlet/action/JSP都会产生两个相应的文件,他们

本质上都是javabean。

项目根目录的JSP 放到------------->tomcat...jsp

项目根目录下的show文件夹中的JSP 放到------------>tomcat...jsp.show

classes下的任意包中的javabean 放到----------->tomcat...jsp

classes下的任意包中的javabean指定了Namespace为show后 放到------------>tomcat...jsp.show

接下来就好理解了,index.jsp向LoginAction发出请求,就好比你想让jsp文件夹中的index_jsp.class调用show包中LoginAction_jsp.class的execute方法,必须先import进来:import show.LoginAction_jsp(以发出请求的类的路径为根路径),这句import就相当于我们写的<a href="show/login">登录</a>

同理,check_jsp.class和LoginAction_jsp.class同包,可以直接访问public的execute方法,不需要import

不再赘述。。。。

原文地址:https://www.cnblogs.com/lanhj/p/3336023.html