① 如何让jsp页面加载时就跳转到action里去执行查询并显示到页面上,而不是点击按钮去查询
web.xml中配置
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
redirect.jsp中如下配置
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"isELIgnored="false"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
response.sendRedirect(basePath+action);
%>
action为你要跳专转的属action
② 如何在JSP页面中直接调用Action
1,用ajax
$.ajax({
cache: false,
url: "xxx/xxx.do",
type: "post",
dataType: "json",
async: false,
data: $("#sysUserAddForm").serialize(),
timeout: 10000,
error: function(XMLHttpRequest) { // 请求失败时调用函数。
},
success: function(data) { // 请求成功后回调专函数。
}
2,属window.location.href="xxx/xxx.do"
③ 基于struts2的JSP页面执行action跳转新的jsp页面之后,新的jsp页面如何自动显示出执行action后的内容
不是太理解你的意思,
信息可以存在session中,在jsp页面里读出来
action:
public String list() {
try {
List<Voter> list = service.getAll();
ActionContext.getContext().getSession().put("voterList", list);
return "list";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
list.jsp:
<c:forEach var="voter" items="${voterList }" varStatus="st">
<tr>
<td>${voter.userId }</td>
<td>${voter.userName }</td>
</tr>
</c:forEach>
struts.xml:
<action name="user_*" class="wangli.action.UserAction" method="{1}">
<result name="login">login.jsp</result>
<result name="loginSuccess" type="redirectAction">user_list</result>
<result name="list">/WEB-INF/list.jsp</result>
<result name="registerSuccess">registerSuccess.jsp</result>
</action>
④ 怎样一进jsp就执行一个action
index.jsp里
<s:action name="action1" executeResult="true" namespace="/" />
<s:action name="action2" executeResult="true" namespace="/" />
struts.xml里:
<package name="default" namespace="/" extends="struts-default">
<action name="action1" class="cn.java.Action1">
<result>/action1.jsp</result>
</action>
<action name="action2" class="cn.java.Action2">
<result>/action2.jsp</result>
</action>
</package>
在action1.jsp里<s:property value="#attr.name" />就得到action1里的属性name的值了(name需要有get方法),如果action1里是ServletActionContext.getRequest().setAttribute("name", "ACTION1"); action1.jsp里直接用request.getAttribute就可以
这样就可以把各个模块单独用一个jsp文件保存,各个主页面只需要定义HTML的布局,就可以把各个模块包含近来,各个主页面需要那个模块就写个<s:action name="xxx" executeResult="true" namespace="/" />,模块重复使用。
⑤ 跳转到一个jsp页面后怎么在自动 跳转到action
1、如果你想在action中获得值,就必须先从jsp跳转到action,然后action返回的时候被struts拦截,匹配result时,就可以控制跳转到另外一个jsp,这当中的过程看起来很长,但是对于计算机来说是非常短暂的,你不会发现是经过action才跳转到第二个jsp。
2、还有一种方式是用 ajax 将你要传递给action的数据以url+ 参数 + 参数值 的方式(即get方式)传递给后台action,但是这个action不能匹配struts当中的result,否则会报错,最好是定义void方法来获得页面数据,request取值,response响应。