@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>
在tomcat\work\Catalina\localhost\你的项目名\org\apache\jsp中会有如下文件:
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
不再赘述。。。。