struts中直接通过jsp来如何调用action

问题描述

初学struts,想用一个display.jsp来显示数据库表中的数据,一个Form,一个方法类,一个action,没有input,如果action执行成功则显示display.jsp 我想直接通过在myeclipse中进入display页面就显示数据,但是好像页面并没有执行到action,所以数据也显示不出来,请教高手怎么能够成功显示数据 啊,卡了一天了。。希望帮忙解决。。。 action的配置: <action attribute="assetsaddForm" name="assetsaddForm" path="/assetsdisplay" scope="request" type="com.school.struts.action.AssetsdisplayAction"> <forward name="dissuccess" path="/assetsdis.jsp" /> <forward name="failure" path="/login_failure.jsp" /> </action> assetsdisplay.jsp代码: <%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <%@ page import="com.school.struts.model.*" %> <%@ page import="com.school.struts.form.*" %> <%@ page import="java.util.*"%> <html> <% Collection coll=(Collection)request.getAttribute("display"); %> <head> <title>资产信息显示</title> <meta http-equiv='refresh' content='1;url=assetsdisplay'> </head> <body> <% if(coll==null || coll.isEmpty()){ %> <table width="100%" height="30" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="36" align="center">暂无资产信息!</td> </tr> </table> <% }else{ //通过迭代方式显示数据 Iterator it=coll.iterator(); int assetsid = 0; String assetsname = ""; String assetscategory = ""; String assetstype = ""; String assetsfactory = ""; int assetsnum = 0; String assetsbuydate = ""; String assetsstate = ""; String assetssource = ""; float assetsvalue = 0; float assetsresidualrate = 0; int assetsage = 0; %> <table align="center" border="4" bordercolor="#00a0be"> <tr class="title"> <td>资产编号</td> <td>资产名称</td> <td>资产类别</td> <td>资产型号</td> <td>生产厂家</td> <td>数量</td> <td>购买日期</td> <td>资产状态</td> <td>资产来源</td> <td>资产原值</td> <td>残值率</td> <td>使用年限</td> </tr> <% while(it.hasNext()){ AssetsaddForm assetsaddForm=(AssetsaddForm)it.next(); assetsid = assetsaddForm.getAssetsid(); assetsname = assetsaddForm.getAssetsname(); assetscategory = assetsaddForm.getAssetscategory(); assetstype = assetsaddForm.getAssetstype(); assetsfactory = assetsaddForm.getAssetsfactory(); assetsnum = assetsaddForm.getAssetsnum(); assetsbuydate = assetsaddForm.getAssetsbuydate(); assetsstate = assetsaddForm.getAssetsstate(); assetssource = assetsaddForm.getAssetssource(); assetsvalue = assetsaddForm.getAssetsvalue(); assetsresidualrate = assetsaddForm.getAssetsresidualrate(); assetsage = assetsaddForm.getAssetsage(); %> <tr> <td style="padding:5px;">&nbsp;<%=assetsid%></td> <td style="padding:5px;">&nbsp;<%=assetsname%></td> <td style="padding:5px;">&nbsp;<%=assetscategory%></td> <td style="padding:5px;">&nbsp;<%=assetstype%></td> <td style="padding:5px;">&nbsp;<%=assetsfactory%></td> <td style="padding:5px;">&nbsp;<%=assetsnum%></td> <td style="padding:5px;">&nbsp;<%=assetsbuydate%></td> <td style="padding:5px;">&nbsp;<%=assetsstate%></td> <td style="padding:5px;">&nbsp;<%=assetsresidualrate%></td> <td style="padding:5px;">&nbsp;<%=assetsvalue%></td> <td style="padding:5px;">&nbsp;<%=assetssource%></td> <td style="padding:5px;">&nbsp;<%=assetsage%></td> </tr> <% } } %> </table> </body> </html> action代码如下: public class AssetsdisplayAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String str = null; System.out.println("dfoiguj"); request.setAttribute("display", Assetsdatamodel.display(str)); return mapping.findForward("dissuccess"); } 方法如下:public static Collection display(String queryif){ AssetsaddForm assetsaddForm = null; Collection assetscoll = new ArrayList(); Statement stmt = null; ResultSet rs = null; try{//捕捉异常信息Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/logistics","root","123456"); stmt = conn.createStatement(); String sql = ""; if (queryif == null || queryif == "" || queryif == "all") { //当参数queryif的值为null、all或空时查询全部数据 sql = "select * from assetsdata"; } //sql = "select * from assetsdata"; rs = stmt.executeQuery(sql); //assets = new ArrayList<AssetsaddForm>(); while (rs.next()){ assetsaddForm = new AssetsaddForm(); assetsaddForm.setAssetsid(rs.getInt("assetsid")); assetsaddForm.setAssetsname(rs.getString("assetsname")); assetsaddForm.setAssetscategory(rs.getString("assetscategory")); assetsaddForm.setAssetstype(rs.getString("assetstype")); assetsaddForm.setAssetsfactory(rs.getString("assetsfactory")); assetsaddForm.setAssetsnum(rs.getInt("assetsnum")); assetsaddForm.setAssetsbuydate(rs.getString("assetsbuydate")); assetsaddForm.setAssetsstate(rs.getString("assetsstate")); assetsaddForm.setAssetssource(rs.getString("assetssource")); assetsaddForm.setAssetsvalue(rs.getFloat("assetsvalue")); assetsaddForm.setAssetsresidualrate(rs.getFloat("assetsresidualrate")); assetsaddForm.setAssetsage(rs.getInt("assetsage")); System.out.println(rs.getInt("assetsid")); assetscoll.add(assetsaddForm);//把查询结果保存到collection集合中} }catch(Exception ex){ System.out.println(ex.getMessage()); }finally{ try{ rs.close(); stmt.close(); }catch(SQLException e){ e.printStackTrace(); } } System.out.println("dfoiguj"); return assetscoll; //返回查询结果}

解决方案

直接访问jsp是不行的,你在浏览器里边这件访问这个action就好了:http://****:***/**/assetsdisplay.do另外说一下,struts1在设计上和易用性上不如struts2,既然都没有用过,还是直接用struts2的好。
解决方案二:
只有执行了action,然后在action里面把list数据放到request.setAttribute中,jsp才能像你这样访问。如果不走action,那就把action里面的代码copy到jsp中。建议你先学习jsp基础知识,再学习servlet、mvc相关知识,到时候你就知道你现在这种做法是有问题的了
解决方案三:
建议直接用struts2的demo先练练手,了解一下mvc的概念及架构,http://www.blogjava.net/nokiaguy/archive/2008/04/15/193229.html
解决方案四:
display页面就显示数据,但是好像页面并没有执行到action,所以数据也显示不出来,因为数据是通过action设置的 所以必须走action才有数据 直接访问jsp不会有数据的 而且也不应该让用户直接访问jsp (MVC的好处就没了)

时间: 2024-11-08 21:58:23

struts中直接通过jsp来如何调用action的相关文章

struts中动态方法调用使用通配符_java

一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同的业务逻辑:另外一种是使用通配符的方式.改变method属性的方式需要配置多个action,而且这些action定义的绝大部分都是相同的,所以这种定义是相当冗余的.因此,使用通配符就可以在一个action标签中代替多个逻辑处理的Action. 二.示范:(和之前的动态方法调用改变form表单acti

Struts中JSP到Action过程中数组的投射

Jsp <div>     <input type="hidden" name="stulst.name" value="xy"/>     <input type="hidden" name="stulst.name" value="xy1"/>     <input type="hidden" name="stu

简单模拟struts中的Interceptor的调用过程遇到的问题

问题描述 简单模拟struts中的Interceptor的调用过程遇到的问题 不明白struts中Interceptor的调用过程(Interceptors的遍历过程),自己写了个小程序测试.得不到想要的结果 求大神指点啊~~ 代码如下: public class Interceptor { Invocation test; String name; public Interceptor(String name){ this.name=name; } public String intercep

在JSP文件中的同一个form表单有多个用来提交表单值的按钮,用户可以通过不同的按钮提交表单,需要调用Action中的不同处理方法,该怎么使用动态方法调用?

问题描述 Action 问题补充:是struts2 怎么修改jsP动态form的action名称呀? 解决方案 function formSubmit(){document.form1.method="post"; var url ="<%=request.getContextPath()%>/hrt/chartSichuan.do?method=recordList"; document.form1.action= url; document.form

Struts中不同的Action和ActionForm组合

在TSS.com上看到一篇好文,有关Struts使用中各种不同的Action和ActionForm组合的利弊.我先消化一下,整理好,供大家参考.原文标题:Struts action mappings: Divide Et Impera,作者:Michael Juravlev.在TSS上的URL:http://www.theserverside.com/articles/article.tss?l=StrutsActionMapping 说明:阅读本文需要一定的Struts基础.注:文中小写的ac

Struts中使用validate()输入校验方法详解_java

1.在ActionSupport中有一个validate()方法,这个方法是验证方法,它会在execute()方法执行之前执行,所以能够起到很好的验证的作用. @Override //重写Action中的validate()方法 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("userna

在Struts中,如何实现在一个DispatchAction的不同方法中分别使用不同的actionform? 在线等了....

问题描述 如题 解决方案 解决方案二:struts2里面action的配置在Action中实现多个方法在配置文件中中通过配置Acrion的method属性来实现dispatch的效果以前的学习日志,你看下吧在struts1.x中,可以继承DispatchAction类实现在一个action中处理多个业务逻辑,在struts2中同样可以实现,如下:假如在一个action中有两个业务逻辑分别为update和delete1.修改struts.xml文件,配置action如下:<actionname=&qu

js组件 jsp问题-jsp通过js调用另一个jsp

问题描述 jsp通过js调用另一个jsp 一个jsp调用通过js调用另一个jsp界面 界面出来了 但是内容无法显示 永远是一个Loading... 解决方案 你怎么调用的,那个页面又是怎么实现的.如果代码不是你写的,谁写的问谁.你完全一窍不通. 解决方案二: 永远是一个Loading... 如果页面确实已经调用成功,而一直显示Loading...,说明你新打开的页面有问题,而不是你的js有问题. 解决方案三: 在JS中调用JSP中的变量一个jsp引入另一个jspjsp button事件调用js

简化繁琐的赋值——反射在Jdbc和Struts中的应用

缘起在Jdbc应用中,我们经常需要有这么样的一个Javabean:当我们从数据库里取值时,我们希望把对应的值赋给Javabean,而后再操作Javabean进行各种业务处理:而我们保存数据的时候,也希望把经过业务处理后的值赋给Javabean,再由该Javabean与Jdbc交互,将数据保存在数据库里. 而在Struts应用中,我们经常要跟ActionForm或DynaActionForm打交道,例如从业面取得用户输入的数据,在Struts应用中,我们实际上是从ActionForm中取得数据:而