一般我们在项目中都是通过点击来访问某一个action来实现数据的查询,并跳转到某视图来显示,但是在网站开发中,往往需要我们在默认的index.jsp中显示一些从数据库查询出来的数据。实现的方式有一些,我把自己实现的方式拿来给大家分享下!!
注意:只提供关键代码,次要代码已经省略。
一:默认首页indexTest2.jsp
在indexTest2.jsp中body标签内
<body>
<jsp:forward page="listUser.action"></jsp:forward><!--跳转到我们指定的action,在此action进行数据库的相关操作-->
</body>
在indexTest2.jsp的body内直接使用上面代码,其他的代码都不用写。
二:struts.xml的配置
<action name="listUser" class="listUserAction"><!---我使用的是s2sh三大框架的整合,这个class="listUserAction"是spring为我们实例化好的,如果没有使用spring来接管,这个地方的就直接使用完整的action,比如:com.test.action.ListUserAction-->
<result name="success">/list.jsp</result>
</action>
三:ListUserAction中的execute()方法
@SuppressWarnings("unchecked")
@Override
public String execute()throws Exception
{
Map request=(Map)ActionContext.getContext().get("request");
request.put("list", userService.findAll());
return SUCCESS;
}
四:web.xml的配置
<welcome-file-list>
<!-- 打开首页查询数据库,并显示在页面 -->
<welcome-file>indexTest2.jsp</welcome-file> <!--把indexTest2.jsp作为默认的欢迎页面-->
<!-- <welcome-file>index.jsp</welcome-file> -->
</welcome-file-list>
<!-- 配置struts2.0 web的过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<!-- 下面是struts2.0以后版本的配置 -->
<!-- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> -->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<!--这两行代码非常关键-->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
五:视图页面list.jsp核心代码
<body>
<h1><font color="red"><center>Users List</center></font></h1>
<table border="1" width="80%" align="center">
<tr>
<td>序号</td>
<td>姓</td>
<td>名</td>
<td>年龄</td>
<td>删除</td>
<td>更新</td>
</tr>
<s:iterator value="#request.list" id="us">
<tr>
<td><s:property value="#us.id"/></td>
<td><s:property value="#us.firstname"/></td>
<td><s:property value="#us.lastname"/></td>
<td><s:property value="#us.age"/></td>
<td><s:a href="deleteUser.action?user.id=%{#us.id}">delete</s:a></td>
<td><s:a href="updatePUser.action?user.id=%{#us.id}">update</s:a></td>
</tr>
</s:iterator>
</table>
</body>
六:访问网站
http://localhost/mytest/
说明:我的项目端口被我改成80了,所以省略了端口号;默认端口号是8080在访问的时候是不可以省略的。