页面加载时调用Struts2 Action方法的实现及web.xml配置咨询
页面加载时调用Struts2 Action方法的实现方案
从你的getlist()方法写法来看,应该是用的Struts2框架吧?下面给你几种可行的实现方式,以及关于web.xml的配置建议:
一、触发getlist()的几种方式
1. 直接在JSP里用Struts2标签同步调用
这是最直接的方式,在index.jsp里嵌入<s:action>标签,页面加载时就会自动执行Action的方法:
<%@ taglib prefix="s" uri="/struts-tags" %> <!-- 替换yourActionName为你在struts.xml里配置的Action名称 --> <s:action name="yourActionName" method="getlist" executeResult="false"/> <!-- 之后就能直接用myList数据了,比如遍历展示 --> <s:iterator value="myList"> <p><s:property value="你的实体属性名"/></p> </s:iterator>
executeResult="false":如果不想让Action的返回结果(比如success对应的页面)覆盖当前的index.jsp,就设为false;要是想直接跳转到Action的结果页,就改成true。
2. 页面加载后用AJAX异步调用
如果不想阻塞页面渲染,或者需要动态更新数据,用JS在页面加载完成后发请求就行:
// 原生JS写法 window.addEventListener('load', function() { fetch('${pageContext.request.contextPath}/yourActionName!getlist.action') .then(res => res.json()) // 如果Action返回JSON的话用这个,返回HTML就用res.text() .then(data => { // 这里可以把数据渲染到页面上,比如插入到某个div里 console.log('数据加载成功:', data); }); }); // jQuery写法(要是你项目里用了jQuery) $(document).ready(function() { $.get('${pageContext.request.contextPath}/yourActionName!getlist.action', function(data) { // 处理返回的数据 }); });
这种方式适合无刷新加载的场景,要是返回JSON的话,记得在struts.xml里给Action配置type="json"的result哦。
3. 让Action作为入口,跳转到index.jsp
调整访问逻辑,用户访问的不是index.jsp,而是Action的路径,Action先执行getlist()加载数据,再跳转到index.jsp:
- 在
struts.xml里配置Action:
<action name="loadIndex" class="你的Action全类名" method="getlist"> <result name="success">/index.jsp</result> </action>
- 然后在web.xml里把默认欢迎页改成这个Action路径,这样用户访问根目录时就会先触发Action:
<welcome-file-list> <welcome-file>loadIndex.action</welcome-file-list> </welcome-file-list>
二、关于web.xml的配置说明
顺便提一句:你说的“结果类型”是在struts.xml里配置的,不是web.xml。web.xml主要负责配置Struts2的核心过滤器和web应用的全局设置。
1. 必备的Struts2过滤器配置
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- Struts2核心过滤器,必须配置 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 可选:默认欢迎页配置 --> <welcome-file-list> <welcome-file>loadIndex.action</welcome-file-list> </welcome-file-list> </web-app>
2. 页面内容类型建议
在index.jsp的顶部加上这句,避免中文乱码,同时明确页面类型:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
内容的提问来源于stack exchange,提问作者Ashok bhor
相关产品推荐
相关产品推荐

