首先先要在WEB-INF下写一个对于数据表的映射XML。大多数起名叫:mapping.xml
我只举例写了一个表的映射示例,请参考。
<class name="org.roller.model.PageData"
identity="id"
access="shared"
key-generator="MAX"
auto-complete="true">
<map-to table="page" /> //表名
<cache-type type="count-limited" /> <field name="id" //表中的字段名。以下均同
type="java.lang.String"
get-method="getId"
set-method="setId">
<sql name="id"
dirty="check" />
<bind-xml name="id"
node="attribute" />
</field> <field name="website"
type="org.roller.model.WebsiteData"
get-method="getWebsite"
set-method="setWebsite">
<sql name="websiteid"
dirty="check" />
<bind-xml
node="element" />
</field> <field name="name"
type="java.lang.String"
get-method="getName"
set-method="setName">
<sql name="name"
dirty="check" />
</field> <field name="description"
type="java.lang.String"
get-method="getDescription"
set-method="setDescription">
<sql name="description"
dirty="check" />
</field> <field name="link"
type="java.lang.String"
get-method="getLink"
set-method="setLink">
<sql name="link"
dirty="check" />
</field> <field name="template"
type="java.lang.String"
get-method="getTemplate"
set-method="setTemplate">
<sql name="template"
dirty="check" />
</field> <field name="updateTime"
type="java.util.Date"
get-method="getUpdateTime"
set-method="setUpdateTime">
<sql name="updatetime"
type="timestamp"
dirty="check" />
</field> </class>
需要form-bean要使用其中的GET和SET方法。来得到或更新数据。
我只举例写了一个表的映射示例,请参考。
<class name="org.roller.model.PageData"
identity="id"
access="shared"
key-generator="MAX"
auto-complete="true">
<map-to table="page" /> //表名
<cache-type type="count-limited" /> <field name="id" //表中的字段名。以下均同
type="java.lang.String"
get-method="getId"
set-method="setId">
<sql name="id"
dirty="check" />
<bind-xml name="id"
node="attribute" />
</field> <field name="website"
type="org.roller.model.WebsiteData"
get-method="getWebsite"
set-method="setWebsite">
<sql name="websiteid"
dirty="check" />
<bind-xml
node="element" />
</field> <field name="name"
type="java.lang.String"
get-method="getName"
set-method="setName">
<sql name="name"
dirty="check" />
</field> <field name="description"
type="java.lang.String"
get-method="getDescription"
set-method="setDescription">
<sql name="description"
dirty="check" />
</field> <field name="link"
type="java.lang.String"
get-method="getLink"
set-method="setLink">
<sql name="link"
dirty="check" />
</field> <field name="template"
type="java.lang.String"
get-method="getTemplate"
set-method="setTemplate">
<sql name="template"
dirty="check" />
</field> <field name="updateTime"
type="java.util.Date"
get-method="getUpdateTime"
set-method="setUpdateTime">
<sql name="updatetime"
type="timestamp"
dirty="check" />
</field> </class>
需要form-bean要使用其中的GET和SET方法。来得到或更新数据。
解决方案 »
- jsp有没有类似于表达式<% int i=0; i++; %}这样的jsp标签
- 求助:myeclipse 安装完毕后为什么只能建java project....
- struts中el的内置标签的问题
- 有关weblogic下log4j的配置,等待中!!!
- 关于登录界面的验证码问题~
- 关于Hibernate日志的问题!
- j2ee_sdk的安装问题!!!
- **请高手指教:Tomcat必须和Apache结合使用吗?**
- springmvc 返回json死循环问题
- 关于一个java GUI做的一个小小计算器的问题,求大神帮帮忙
- STRUTS中用<logic:iterate id="row1" name="rows"> 得到数据,竟然会抛出错误?
- STRUTS框架中,如何从数据库表中取数据(100条)?300分
你可以去这里看看
http://expert.csdn.net/Expert/topic/2480/2480483.xml?temp=.1079981
我先给你发个大概思路吧
我是用ArrayList添加从数据库中得到的列值
然后再显示在jsp页面上
我现在能查到数据,能显示最后的数据
就是前面的数据没有显示
1、到Oracle的otn网站上下载xdk.
2、到apache网站上下载xtags.
3、代码如下:
db访问层(oracle为例):this.connection = ... //建立连接
this.etcSQL="select name from aa where rownum<=100";
PreparedStatement statement = this.connection.prepareStatement(this.etcSQL
);
ResultSet rset = statement.executeQuery();
query = new OracleXMLQuery(this.connection, rset);
query.setEncoding(this.encoding);
query.setErrorTag("error");
query.useNullAttributeIndicator(true);
query.useLowerCaseTagNames();String xdkXML = query.getXMLString();
以下还有
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;...
TransformerFactory tFactory = TransformerFactory.newInstance();
InputStream in = context.getResourceAsStream(xsltfile); //xsltfile为xslt文件
Transformer transformer = tFactory.newTransformer(new StreamSource(in));
transformer.setOutputProperty("encoding", "gb2312");
StringWriter sw = new StringWriter();
transformer.transform(new StreamSource(new StringReader(xdkXML)), new StreamResult(sw));
String okXML = sw.toString();
以下还有
<%@ page contentType="text/html;charset=gb2312" language="java"%>
<%@ taglib uri="/taglibs-xtags" prefix="xtags" %><xtags:parse>
<%request.getAttribute("okXML").toString()%>
</xtags:parse><xtags:forEach select="/data/ReportList2">
<xtags:valueOf select='name'/>
</xtags:forEach>
javax.servlet.jsp.JspException: Cannot find bean guide in scope request
at org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:940)
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:277)
at _admin._gzxx._P040201._jspService(P040201.jsp:64)
[/admin/gzxx/P040201.jsp]
<logic:iterate id="id" name="value">
<tr>
<td><bean:write name="id" property="username"/></td>
</tr>
</logic:iterate>
这段代码中的id随便起名,name是从Action中传出来的request.setAttribute(*,*)的值,
property是ActionForm中的一个值,我也是要把从数据库中得到的值显示在页面上,
我准备把要查询的字段做个<html:hidden>试试。
你去看看这个吧
http://expert.csdn.net/Expert/topic/2473/2473555.xml?temp=.1443903
用top x 的方法可能可以解决!
SELECT TOP N问题(1)
2003-08-21 admin http://tutorial.huacool.com 点击: 31
SELECT TOP N问题(1)
本贴讨论SELECT TOP N问题.
现在正在一家计算机公司兼职,开发ASP应用. 在最近的一个商业项目里有这样一个需求:用户在查询时,只需要按照某(些)列排序后TOP 20的纪录. SQL SERVER 7很好地支持了TOP N 操作,但考虑到系统移植问题, 我又考虑在其他几个主流DBMSs中如何实现. 鉴于只有DB2 UDB 7,ORACLE 8i,SQL SERVER 7,本贴仅讨论这三个DBMS.
简单地说,TOP N问题就是:在SELECT中,仅选择按照某(些)列排序后TOP N的纪录. 考虑到等值问题,又可以分为两种: 一是仅仅返回N条纪录(M 1), 二是还包括所有于第N条等值的纪录(M 2). 当然最内层的子查询也可以有其他的子句, 或者TOP N也可以应用在没有ORDER BY的情况下,这样更简单.1. SQL SERVER 7: 用 TOP N (WITH TIES)
M1:
SELECT TOP N * FROM MYTABLE ORDER BY ORD_COL;M2:
SELECT TOP N WITH TIES * FROM MYTABLE ORDER BY ORD_COL;
注: SQL SERVER 7提供了PERCENT N WITH TIES, ACCESS 中提供了TOP N,但含义是M 2.2. ORACLE 8i: 用 ROWNUM<=N
M1:
SELECT * FROM
( SELECT * FROM MYTABLE ORDER BY ORD_COL DESC)
WHERE ROWNUM<=N
M2:
SELECT * FROM MYTABLE WHERE ORD_COL>=
(SELECT MIN(ORD_COL) FROM
( SELECT * FROM MYTABLE ORDER BY ORD_COL DESC)
WHERE ROWNUM<=N)
ORDER BY ORD_COL DESC
注意以下两种错误用法:
WRONG 1:
SELECT * FROM MYTABLE
WHERE ROWID<=N
ORDER BY ORD_COL DESC;WRONG 2:(因为WHERE ROWNUM<=N 在ORDER BY 前执行)
SELECT * FROM MYTABLE
WHERE ROWNUM<=N
ORDER BY ORD_COL DESC;3: DB2
用FETCH FIRST N ROWS ONLY
M1:
SELECT * FROM MYTABLE
ORDER BY ORD_COL DESC
FETCH FIRST N ROWS ONLY
M2:
没有找到,因为DB2不允许在FROM中嵌套有ORDER BY子句的子查询.
import OST.lykDAO;import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.ModuleException;
import org.apache.struts.util.MessageResources;import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;public final class lykAction extends Action
{
// 变量定义:
private Log log = LogFactory.getLog("org.apache.struts.webapp.Example"); private ConnectionPool pool; public lykAction() {
pool = ConnectionPool.getInstance();
}
//函数定义:
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Extract attributes and parameters we will need
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
lykForm m_lykForm = (lykForm) form;
Connection con = null; try
{
con = pool.getConnection();
lykDAO m_lykDAO = new lykDAO(con); String action=request.getParameter("action");
if(action==null)action="find";
if(action.equals("delete"))
{
String expression=request.getParameter("expression");
m_lykDAO.removeID(expression);
}
////////////
if(action.equals("update"))
{
String expression=request.getParameter("expression");
lyk m_lyk= new lyk();
//<update>
m_lyk.setUser_id(m_lykForm.getUser_id());
m_lyk.setPassword(m_lykForm.getPassword());
m_lyk.setName(m_lykForm.getName());
m_lyk.setDescription(m_lykForm.getDescription());
m_lyk.setWeb_site(m_lykForm.getWeb_site());
m_lyk.setAddress(m_lykForm.getAddress());
//</update>
m_lykDAO.update(m_lyk,expression);
}
///////////////
//<sqlstr>
String sql="SELECT * FROM dbo.attraction";
//</sqlstr>
Collection col = m_lykDAO.findSQL(sql);
request.setAttribute("lyk",col); //<分页>
m_lykForm.setRowCount(col.size());
m_lykForm.setLength(5);//设置每页显示记录数
String page=request.getParameter("page");
int ipage;
try
{
ipage=java.lang.Integer.parseInt(page,10);
}
catch (Exception e)
{
ipage=m_lykForm.getPage();
}
m_lykForm.setPage(ipage);
m_lykForm.setOffset(ipage*m_lykForm.getLength());
m_lykForm.setPageCount(m_lykForm.getRowCount()/m_lykForm.getLength()+1);
String strPage="";
strPage+="共";
strPage+=String.valueOf(m_lykForm.getRowCount());
strPage+="条记录,共";
strPage+=String.valueOf(m_lykForm.getPageCount());
strPage+="页,当前是第";
strPage+=String.valueOf(ipage+1);
strPage+="页, ";
int istart,iend;
istart=ipage-5;
if(istart<0) {istart=0;}
iend=istart+10;
if(iend>m_lykForm.getPageCount()) {iend=m_lykForm.getPageCount();}
istart=iend-10;
if(istart<0) {istart=0;}
for(int i=istart;i<iend;i++)
{
strPage+="<a href='lykAction.do?action=find&page=";
strPage+=String.valueOf(i);
strPage+="'>";
strPage+=String.valueOf(i+1);
strPage+="</a>";
strPage+=" ";
}
m_lykForm.setMybeanvariable1(strPage);
m_lykForm.setAction(action);
request.setAttribute("lykForm",m_lykForm);
//</分页> return mapping.findForward("success");
}
catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}
finally
{
try
{
if (con != null)
con.close();
}
catch (SQLException e)
{
throw new RuntimeException(e.getMessage());
}
} }}
import OST.lykDAO;import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.ModuleException;
import org.apache.struts.util.MessageResources;import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;public final class lykAction extends Action
{
// 变量定义:
private Log log = LogFactory.getLog("org.apache.struts.webapp.Example"); private ConnectionPool pool; public lykAction() {
pool = ConnectionPool.getInstance();
}
//函数定义:
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Extract attributes and parameters we will need
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
lykForm m_lykForm = (lykForm) form;
Connection con = null; try
{
con = pool.getConnection();
lykDAO m_lykDAO = new lykDAO(con); String action=request.getParameter("action");
if(action==null)action="find";
if(action.equals("delete"))
{
String expression=request.getParameter("expression");
m_lykDAO.removeID(expression);
}
////////////
if(action.equals("update"))
{
String expression=request.getParameter("expression");
lyk m_lyk= new lyk();
//<update>
m_lyk.setUser_id(m_lykForm.getUser_id());
m_lyk.setPassword(m_lykForm.getPassword());
m_lyk.setName(m_lykForm.getName());
m_lyk.setDescription(m_lykForm.getDescription());
m_lyk.setWeb_site(m_lykForm.getWeb_site());
m_lyk.setAddress(m_lykForm.getAddress());
//</update>
m_lykDAO.update(m_lyk,expression);
}
///////////////
//<sqlstr>
String sql="SELECT * FROM dbo.attraction";
//</sqlstr>
Collection col = m_lykDAO.findSQL(sql);
request.setAttribute("lyk",col); //<分页>
m_lykForm.setRowCount(col.size());
m_lykForm.setLength(5);//设置每页显示记录数
String page=request.getParameter("page");
int ipage;
try
{
ipage=java.lang.Integer.parseInt(page,10);
}
catch (Exception e)
{
ipage=m_lykForm.getPage();
}
m_lykForm.setPage(ipage);
m_lykForm.setOffset(ipage*m_lykForm.getLength());
m_lykForm.setPageCount(m_lykForm.getRowCount()/m_lykForm.getLength()+1);
String strPage="";
strPage+="共";
strPage+=String.valueOf(m_lykForm.getRowCount());
strPage+="条记录,共";
strPage+=String.valueOf(m_lykForm.getPageCount());
strPage+="页,当前是第";
strPage+=String.valueOf(ipage+1);
strPage+="页, ";
int istart,iend;
istart=ipage-5;
if(istart<0) {istart=0;}
iend=istart+10;
if(iend>m_lykForm.getPageCount()) {iend=m_lykForm.getPageCount();}
istart=iend-10;
if(istart<0) {istart=0;}
for(int i=istart;i<iend;i++)
{
strPage+="<a href='lykAction.do?action=find&page=";
strPage+=String.valueOf(i);
strPage+="'>";
strPage+=String.valueOf(i+1);
strPage+="</a>";
strPage+=" ";
}
m_lykForm.setMybeanvariable1(strPage);
m_lykForm.setAction(action);
request.setAttribute("lykForm",m_lykForm);
//</分页> return mapping.findForward("success");
}
catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}
finally
{
try
{
if (con != null)
con.close();
}
catch (SQLException e)
{
throw new RuntimeException(e.getMessage());
}
} }}