日期:2014-05-17  浏览次数:20702 次

加载页面时,如何先调用struts中action的方法
我是这样想的,不通过ajax框架。直接先执行服务器端的action(因为只有先通过它才能读取到数据库中的数据)获取数据后再让页面显示信息。
比如:我输入url http://project/shop/showProducts.jsp后,它就首先执行action里的load()方法,获取页面要显示的数据后,再让页面显示出来。

------解决方案--------------------
直接调用一个Servlet不行吗?
------解决方案--------------------
先调用这个ACTION的.do嘛,如果是STRUTS2.0我就不知道了。
------解决方案--------------------
将这个jsp页面换成一个Servlet
------解决方案--------------------
2楼的也可以

------解决方案--------------------
url http://project/shop/showProducts.do
------解决方案--------------------
是啊 用servlet就可以了吧
------解决方案--------------------
直接在jsp页面的body里onload加一个方法,方法里就写个form提交,在action那边得到数据后再转发过来
------解决方案--------------------
就直接调用那个.do返回个页面就好啦


------解决方案--------------------
应该先请求*.do,再由相关的Action转发至相关的JSP.
------解决方案--------------------
由action到action
------解决方案--------------------
只要你访问ACTIONSERVLET就会调用ACTION类的方法了,什么时候访问都没问题,不过你要配置好STRUTS的配置文件。
------解决方案--------------------
楼主要详细说明的话,看struts的user guide,里面说得很详细的
------解决方案--------------------
没有什么.do形式的,只有扩展和前缀,这是servlet的映射
------解决方案--------------------
用struts2
------解决方案--------------------
struts 里面的 配置

<global-forwards >
<forward name="begin" path="begin.do" redirect="false"></forward>
</global-forwards>


首页的配置


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=gb2312" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

 
</head>
  
<body>
<logic:forward name="begin"/>
</body>
</html>
------解决方案--------------------
这个理论上要做到这个不难。

直接访问JSP页面,然后在页面中使用JavaScript调用OnLoad方法,在OnLoad方法中使用
window.location.href="你的action.do路径"。然后调用方法,显示数据回来。就可以了。

但我觉得在实际开发过程中,还是先访问Action,然后Action执行数据完成之后,再转发到JSP页面上。一个确保流程清晰,符合MVC模式。易于控制。另一个保护了地址栏的路径。使真实的路径不易被用户看到。
------解决方案--------------------
直接跳转吗?
struts-config.xml:
<global-forwards>
<forward name="myAction" path="myAction.do"/>
<global-forwards/>

showProducts.jsp:
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<body>
<logic:forward name="myAction" />
</body>
</html>