我刚刚开始进行网络应用开发。我有一个只有一行的index.jsp。
< jsp:forward page =“landing.do?”/>
什么是
以上行吗?
page =“landing.do?”实际上是指?
“landing.do?”旁边的问号“?”表示什么?
正如Bozho正确指出的那样,一个名为“action”的servlet被映射为在我的web.xml中处理“*。do”(如下所示)。
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
现在
如何找出“landing.do”对应的servlet“动作”实际上是什么?
感谢。
答案 0 :(得分:4)
<jsp:forward>
将客户端请求转发给page
属性上声明的网址。
我还需要提一下,在您的示例中,如果要指定相对URL,则应在/
声明中设置page
作为第一个字符,即:
实际上,这被转换为重定向到(如果是localhost)
http://localhost:8080/MyAPP/landing.do? (你的翻译成http://localhost:8080/MyAPPLanding.do?)
?
允许您将application/x-www-form-urlencoded
参数附加到声明中。
更多信息here。
要了解landing.do
的作用,请执行以下操作:
struts-config.xml
(位于项目的WEB-INF
文件夹中)文件,找到<action>
)属性的任何操作(path="/landing"
)。type
的属性(在该操作中)。该类型是Struts调用以执行操作的操作类的类名。类名是完全限定名。Action
,DispatchAction
,LookupDispatchAction
),您必须找到其映射并查看方法Struts调用。landing.do
类型为Action
。因此,请阅读execute()
方法的作用。实际上,所有行动都是Struts的execute()
。其他操作只是Template Method
模式,它们知道某些映射要调用的方法。答案 1 :(得分:1)
此行会将用户转发到该网站的另一个页面,尤其是 landing.do
页= “landing.do?”实际上是指网站 landing.do 的某些页面。我相信这个页面是用Struts框架编写的。 (但可以是其他)
问号是什么?“在“landing.do”旁边在这种情况下毫无意义。一般在“?”之后应该有一个请求参数列表。在这种情况下,将没有参数。
<强>更新强> 您应该找到映射到该servlet名称的servlet类。之后,您将能够尝试了解该servlet类的功能。另外,请查看Struts教程或规范,以了解Struts框架工作流。
答案 2 :(得分:1)
*.do
?
在这里没有任何意义 - 通常它标记了get参数的开头(例如?param=value
)forward
使用指定的内容更改当前页面,而客户端不知道发生了更改。