Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何执行需要在主打开JSP中执行的struts2操作_Java_Javascript_Jsp_Struts2 - Fatal编程技术网

Java 如何执行需要在主打开JSP中执行的struts2操作

Java 如何执行需要在主打开JSP中执行的struts2操作,java,javascript,jsp,struts2,Java,Javascript,Jsp,Struts2,当在主(索引)页面访问网站时,它必须加载通过操作获得的信息。我一直在做一些研究,但我不知道该怎么做。有人能给我一个提示吗 我所看到的只是通过JavaScript。如果还有其他方法,如果您能解释一下,我将不胜感激。要启动您的应用程序,而不是像这样直接指向JSP: http://localhost:8080/myapp/index.jsp 您可以指向在索引JSP上转发的操作 http://localhost:8080/myapp/ Web.xml <welcome-file-list>

当在主(索引)页面访问网站时,它必须加载通过操作获得的信息。我一直在做一些研究,但我不知道该怎么做。有人能给我一个提示吗


我所看到的只是通过JavaScript。如果还有其他方法,如果您能解释一下,我将不胜感激。

要启动您的应用程序,而不是像这样直接指向JSP:

http://localhost:8080/myapp/index.jsp
您可以指向在索引JSP上转发的操作

http://localhost:8080/myapp/
Web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

index.html
Index.html(放在webContent下,这只是一个示例):


我的申请
struts-config.xml

    <action name="start" class="com.myapp.startAction" method="init">
                <result name="success">/main.jsp</result>
    </action>

/main.jsp

这可以是另一种方法,特别是使用struts2(例如使用index.jsp而不是@coding\u idiot建议的index.html)。但是这应该是可行的。

最好在URL映射中为index.jsp使用普通的Servlet映射


否则,页面加载中的Javascript是另一种选择。

您可以在
web.xml
文件中使用
Struts2
操作

<welcome-file-list>
  <welcome-file>index</welcome-file>
</welcome-file-list>
因此,在本例中,当您点击此URL www.myapp.com/myapp时,它的调用索引操作为
Struts2
,您将能够为您的欢迎页面执行所有
init
工作。

我就是这样做的:

index.jsp

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" language="java"%>
<% response.sendRedirect("index"); %>


假设struts.xml中定义了一个
索引
命名操作

假设我们有如下内容:

http://localhost:8080/myapp/index.jsp
操作:CalAction.Action

jsp:Calculator.jsp

在JSP页面的head标记中添加此行 e、 g:

web.xml:

<welcome-file-list>
   <welcome-file>/Calculator.jsp</welcome-file>
</welcome-file-list>

/计算器.jsp

@kloe的回答也解决了这个问题,但它会导致你的页面每秒钟刷新一次,而这反过来又会在每秒钟之后调用你的页面,造成开销。无意冒犯!干杯

另一个选项是创建index.jsp,然后使用
标记在jsp内呈现操作的输出。这将避免任何重定向代码


您想知道sturts是如何与其
动作类进行通信的吗?简单地说,哪个东西是执行特定JSP的动作?不,我知道如何执行一个动作,但我不知道如何让主idex JSP执行它自己需要的动作,以便在加载时显示特定集合。简单的一切都应该是一个动作,struts2控制之外不应该有JSP。你可能认为一个动作需要一个类,这不是真的,任何经过stuts2的东西都是动作。我强烈建议研究struts2 conventions插件。我不知道我是否还没有完全理解你的建议。。。我已经准备好了一个动作来完成所有的初始化工作。我想做的是在页面加载时执行该操作,这样它就有了信息。@Moises:你说的是哪一页?主登录页还是其他页面?@Moises:这就是我告诉你的。我建议你需要在欢迎文件中定义Struts2操作名来代替jsp,这样当任何一个访问你的站点时,这个操作都会被调用,你可以做任何你想做的不起作用的事情。加载web应用程序时需要静态资源&因此,欢迎文件列表应指向现有资源。@coding\u idiot:我在五月份的应用程序中已经这样做了,它们工作得非常好,这是web应用程序中的一种常见方式,Struts2没有什么特别之处,您只是在愚弄容器。
?抱歉,这是struts1格式。struts 2的正确代码是/main.jsp。我会编辑帖子。这会导致页面每秒钟刷新一次。克洛伊的回答很好。他们离开了欢迎页面,因此不会有任何刷新。@AleksandrM我尝试了克洛伊的回答,但它给了我刷新,然后我尝试了这个,但没有刷新。在另一个动作中调用一个动作会有过大的杀伤力。它不会在另一个动作中调用一个动作。jsp将呈现为欢迎页面,并在index.jsp内部执行。这似乎是一种比在index.jsp中放置重定向更好的方法,这只是我的观点。
<welcome-file-list>
   <welcome-file>/Calculator.jsp</welcome-file>
</welcome-file-list>