我做STRUTS连接的是ORACLE数据库,我连接是成功的,只是在测试一个一个名字叫做ReadAction的ACTION有问题。中间跳转。下面代码是我做STRUTS时写在display.jsp里面的。JSP是对的。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    
    <title>My JSP 'display.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  
  <body>
    <c:forEach items="${requestScope['guestbook.display.list']}" var="article">

      <c:out value="${article.id}" />
      <c:out value="${article.name}"/>
      <c:out value="${article.email}"/>
      <c:out value="${article.url}"/>
      <c:out value="${article.title}"/>
      <c:out value="${article.content}"/>
      <c:out value="${article.time}"/>
      <br><br>
    </c:forEach>

  </body>
</html>
我本来是想输出我的数据库里内容,我连接ORACLE是成功的,能往里面输入数据。但是我测试read.do就是在浏览器里面输入:http://localhost:8036/guestbook/read.do出现的是${article.id} ${article.name} ${article.email} ${article.url} ${article.title} ${article.content} ${article.time}
不知道是怎么回事?本来是有例子的,我就是按照例子做的,但是例子输出的是数据库的内容。我的就不是,我不知道是不是这个JSP有问题。请各位帮帮忙谢谢了 

解决方案 »

  1.   

     <c:forEach items="${requestScope['guestbook.display.list']}" var="article">      ${article.id}
       ${article.name}
         ${article.email}
          ${article.url}
        ${article.title}"
         ${article.content}
        ${article.time}
          <br> <br> 
        </c:forEach> 这样试下. El 表达试 本身就有了输出的功能. <c:out />也是输出的功能 . 不要重复使用.
      

  2.   

        <c:forEach items="${requestScope['guestbook.display.list']}" var="article">       <c:out value="article.id" /> 
          <c:out value="article.name"/> 
          <c:out value="article.email"/> 
          <c:out value="article.url"/> 
          <c:out value="article.title"/> 
          <c:out value="article.content"/> 
          <c:out value="article.time"/> 
          <br> <br> 
        </c:forEach> 
      

  3.   

    第一,与你在后台程序里怎么存的有一定的关系.如果你是直接的把 bean放到request.setAttribute("",bean)的话,按你上面的取
      <c:forEach items="${requestScope['guestbook.display.list']}" var="article">   //只不过这里,你为什么不在后台就直接用request.setAttribute('article',对象)呢,如果这样的话,这里也不用这么麻烦了,直接用 <c:forEach items="${article}" var="article">就行了;      <c:out value="${article.id}" /> 
          <c:out value="${article.name}"/> 
          <c:out value="${article.email}"/> 
          <c:out value="${article.url}"/> 
          <c:out value="${article.title}"/> 
          <c:out value="${article.content}"/> 
          <c:out value="${article.time}"/> 
          <br> <br> 
        </c:forEach> 
      

  4.   

    c:out把
    ${article.id} ${article.name} ${article.email} ${article.url} ${article.title} ${article.content} ${article.time} 原样输出了可以用
    <%%>包起来
      

  5.   

    在不使用是不是忽略html标记的时候可以不用c:out直接el输出  value=中去掉EL标记
      

  6.   

    这个问题还是没有能得到解决。不过xuewei2007大哥好象说的有道理。我把我的那个action代码贴出来帮我参考一下:
    package com.v512.guestbook.web.action;import java.sql.SQLException;
    import java.util.List;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import com.v512.guestbook.model.Guestbook;/**
     * MyEclipse Struts Creation date: 06-03-2008
     * 
     * XDoclet definition:
     * 
     * @struts.action
     */
    public class ReadAction extends Action {
    /*
     * Generated Methods
     */ /**
     * Method execute
     * 
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) { String sql = "select * from guestbook order by id desc"; try {
    Context context = new InitialContext();
    DataSource ds = (DataSource) context
    .lookup("java:/comp/env/jdbc/oracleds");
    QueryRunner qr = new QueryRunner(ds);
    List list = (List) qr.query(sql, new BeanListHandler(
    Guestbook.class));
    request.setAttribute("guestbook.display.list",list);
    } catch (NamingException e) { e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return mapping.findForward("guestbook.display");
    }
    }
    这个个就是那个ACTION。看来大哥们就应该知道该怎么改了
      

  7.   

    这个问题还是没有能得到解决。不过xuewei2007大哥好象说的有道理。我把我的那个action代码贴出来帮我参考一下: 
    package com.v512.guestbook.web.action; import java.sql.SQLException; 
    import java.util.List; import javax.naming.Context; 
    import javax.naming.InitialContext; 
    import javax.naming.NamingException; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import javax.sql.DataSource; import org.apache.commons.dbutils.QueryRunner; 
    import org.apache.commons.dbutils.handlers.BeanListHandler; 
    import org.apache.struts.action.Action; 
    import org.apache.struts.action.ActionForm; 
    import org.apache.struts.action.ActionForward; 
    import org.apache.struts.action.ActionMapping; import com.v512.guestbook.model.Guestbook; /** 
    * MyEclipse Struts Creation date: 06-03-2008 

    * XDoclet definition: 

    * @struts.action 
    */ 
    public class ReadAction extends Action { 
    /* 
    * Generated Methods 
    */ /** 
    * Method execute 

    * @param mapping 
    * @param form 
    * @param request 
    * @param response 
    * @return ActionForward 
    */ 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { String sql = "select * from guestbook order by id desc"; try { 
    Context context = new InitialContext(); 
    DataSource ds = (DataSource) context 
    .lookup("java:/comp/env/jdbc/oracleds"); 
    QueryRunner qr = new QueryRunner(ds); 
    List list = (List) qr.query(sql, new BeanListHandler( 
    Guestbook.class)); 
    request.setAttribute("guestbook.display.list",list); 
    } catch (NamingException e) { e.printStackTrace(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 

    return mapping.findForward("guestbook.display"); 


    这个个就是那个ACTION。看来大哥们就应该知道该怎么改了
      

  8.   

    对了我还使用了一个一个组件。是例子里面说比较方便管理JDBC的,其实我做这个是想实验一下。commons-dbutils-1.1.jar这个就是那个组件。我也用了这个组件完成了:向数据库里面插入数据的工作,是正确的。但是这次输出就有了问题。具体我也不清楚。我按照上面大哥们说的去掉$这个的方法还有其他的都不行。还是输出的是字符。不是我想要的数据库内容。首先数据库里面有内容的哈