2007/03/30 00:37
一、struts2。
跟webwork配置基本一致,主要是struts2.properties和struts.xml 2个配置文件,我的struts2.properties如下配置:
struts2.properties
跟webwork配置基本一致,主要是struts2.properties和struts.xml 2个配置文件,我的struts2.properties如下配置:
struts2.properties
2007/01/31 14:19
文件生成时间:Fri Jan 26 01:53:58 2007,应该是目前的最新版本了。
从php的网站下载的chm文件居然打不开,http://www.php.net/docs.php
又不想用那单个html页面和n个html页面的版本。重新编译了一个可用的chm,目录和索引都是从下载的那个chm文件反编译出来的,应该还算比较全面。编译过程出了几个小错误,影响应该不大,先凑合着用吧。
从php的网站下载的chm文件居然打不开,http://www.php.net/docs.php
又不想用那单个html页面和n个html页面的版本。重新编译了一个可用的chm,目录和索引都是从下载的那个chm文件反编译出来的,应该还算比较全面。编译过程出了几个小错误,影响应该不大,先凑合着用吧。
2007/01/24 12:04
Oracle:
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.1:1521:orcl", "user","pass");
SqlServer:
ms的驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.01:1433;DatabaseName=pub;SelectMethod=cursor","user", "password");
weblogic的
DriverManager.registerDriver(new Driver());
con = DriverManager.getConnection("jdbc:weblogic:mssqlserver4:newsohudb@127.0.0.1:1433","user", "password");
Mysql:
Class.forName("com.MySQL.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8","user","password");
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.1:1521:orcl", "user","pass");
SqlServer:
ms的驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.01:1433;DatabaseName=pub;SelectMethod=cursor","user", "password");
weblogic的
DriverManager.registerDriver(new Driver());
con = DriverManager.getConnection("jdbc:weblogic:mssqlserver4:newsohudb@127.0.0.1:1433","user", "password");
Mysql:
Class.forName("com.MySQL.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8","user","password");
2007/01/09 23:21
[codes=java]
package cn.org.jock.http.listener;
import java.util.Hashtable;
import java.util.Iterator;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author jock
*
*/
public class SessionListener implements HttpSessionListener {
// 集合对象,保存session 对象的引用
static Hashtable<String,HttpSession> ht = new Hashtable<String,HttpSession>();
// 实现HttpSessionListener接口,完成session创建事件控制
public void sessionCreated(HttpSessionEvent arg0) {
HttpSession session = arg0.getSession();
ht.put(session.getId(), session);
System.out.println("create session :" + session.getId());
}
// 实现HttpSessionListener接口,完成session销毁事件控制
public void sessionDestroyed(HttpSessionEvent arg0) {
HttpSession session = arg0.getSession();
System.out.println("destory session :" + session.getId());
ht.remove(session.getId());
}
// 返回全部session对象集合
static public Iterator getSet() {
return ht.values().iterator();
}
// 依据session id返回指定的session对象
static public HttpSession getSession(String sessionId) {
return (HttpSession) ht.get(sessionId);
}
}
[/codes]
别忘了在web.xml里加上
<listener>
<listener-class>cn.org.jock.http.listener.SessionListener</listener-class>
</listener>
有了这个就可以方便的做很多事了,统计在线人数、在线列表、用户单一登陆等等,自己扩展吧。
package cn.org.jock.http.listener;
import java.util.Hashtable;
import java.util.Iterator;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author jock
*
*/
public class SessionListener implements HttpSessionListener {
// 集合对象,保存session 对象的引用
static Hashtable<String,HttpSession> ht = new Hashtable<String,HttpSession>();
// 实现HttpSessionListener接口,完成session创建事件控制
public void sessionCreated(HttpSessionEvent arg0) {
HttpSession session = arg0.getSession();
ht.put(session.getId(), session);
System.out.println("create session :" + session.getId());
}
// 实现HttpSessionListener接口,完成session销毁事件控制
public void sessionDestroyed(HttpSessionEvent arg0) {
HttpSession session = arg0.getSession();
System.out.println("destory session :" + session.getId());
ht.remove(session.getId());
}
// 返回全部session对象集合
static public Iterator getSet() {
return ht.values().iterator();
}
// 依据session id返回指定的session对象
static public HttpSession getSession(String sessionId) {
return (HttpSession) ht.get(sessionId);
}
}
[/codes]
别忘了在web.xml里加上
<listener>
<listener-class>cn.org.jock.http.listener.SessionListener</listener-class>
</listener>
有了这个就可以方便的做很多事了,统计在线人数、在线列表、用户单一登陆等等,自己扩展吧。
2007/01/07 21:51
LIST页面
<logic:iterate id="item" name="list" scope="request" indexId="indexid" offset="0">
<tr>
<td height="30" align=center>${pageScope.indexid+1}</td>
<td align=center><a href='${ad.url}' target=_blank>${item.url}</a> </td>
<td align=center>${item.budget}</td>
<td align=center>${item.pvmin}</td>
<td align=center>${item.consumeall}元/${ad.pvall}次</td>
<td align=center>${item.consumeday}元/${ad.pvday}次</td>
<td align=center>
<html:link page="/manage.do" paramId="id" paramName="item" paramProperty="adid">编辑</html:link>
<html:link page="/delete.do" paramId="id" paramName="item" paramProperty="adid" onclick="return confirmDelete()">删除</html:link>
</td>
</tr>
</logic:iterate>
根据条件判断出哪个list
<logic:equal parameter="page" value="1">
<b>2006-12-1 至 2006-12-1 分日统计报告</b>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width="100%" borderColorLight=#cccccc
border=1>
<TR>
<TD width="20%" height="25" align="center" bgcolor="#cccccc"><B>日期</B></TD>
<TD width="15%" align="center" bgcolor="#cccccc"><B>次数</B></TD>
<TD width="25%" align="center" bgcolor="#cccccc"><B>金额</B></TD>
<TD width="40%" align="center" bgcolor="#cccccc"><B>所属类别</B></TD>
</TR>
<TR>
<TD width="8%" height="25" align="center"> </TD>
<TD align="center"> </TD>
<TD align="center"> </TD>
<TD align="center"> </TD>
</TR>
<TR>
<TD width="8%" height="25" align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
</TR>
<TR>
<TD height="25" bgcolor="#f0f0f0"><B>总计</B></TD>
<TD height="25" bgcolor="#f0f0f0"><B>0次</B></TD>
<TD colSpan=1 rowSpan=2 bgcolor="#f0f0f0"><B>0元</B></TD>
<TD colSpan=1 rowSpan=2 bgcolor="#f0f0f0"> </TD>
</TR>
</TABLE>
</logic:equal>
LIST页面嵌套2层循环
grouplist是一个java.util.List<Group>
clientlist是Group中的一个变量,类型也是一个List,以下内容是显示grouplist中的内容并将group中的每个client也显示。
<logic:iterate id="group" name="grouplist" scope="request" indexId="indexid" offset="0">
<!-- 第一层循环grouplist -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#f0f0f0" height=24>
<td width="70%" height="25" align="left" bgcolor="#cccccc"> ${group.groupname} </td>
<td width="30%" align="right" bgcolor="#cccccc">
<a href="#">改名</a>
<html:link page="/deletegroup.do" paramId="id" paramName="group" paramProperty="groupid" onclick="return confirmDelete()">删除</html:link>
</td>
</tr>
</table>
<table width=100% border=0 cellpadding="3" cellspacing="1">
<logic:iterate id="client" name="group" property="clientlist" type="java.util.Vector" offset="0"> <tr>
<!-- 第二层循环clientlist -->
<td width=100%>
<html:multibox property="selecteduserids">
${client.value}
</html:multibox>
<a href='client_info.jsp?aid=${client.value}' target=_blank>${client.label}</a>
</td>
</tr>
</logic:iterate>
</table>
<br>
</logic:iterate>
一个form里有多个submit时 ,action里如何判断来自哪个submit提交的
<html:submit property="dosubmit" value=" 生成订单 "/>
if (request.getParameter("dosubmit") != null) {
。。。
}
表单中部分内容是根据用户状态动态生成的时,将生成的方法写在reset方法里
public void reset(ActionMapping mapping, HttpServletRequest request) {
provinceSelect = ProvinceSelect.getProvinceSelect();
this.manageid = -1;
this.province = "";
// this.groupid = -1;
this.selectedProduct = null;
Account a = (Account) request.getSession().getAttribute("user");
if (a != null) {
ManageSelect ms = new ManageSelect(a.getIAccountId());
this.setManageSelect(ms.getManageSelect());
GroupSelect gs = new GroupSelect(a.getIAccountId());
this.setGroupSelect(gs.getGroupSelect());
ProductSelect ps = new ProductSelect();
this.setProductSelect(ps.getProductSelect(a.getCProduct()));
}
}
要使用validation.xml验证,form类要继承org.apache.struts.validator.ValidatorForm
同时form类里没有validate验证方法。
个人认为validation只做一些书写规则的校验,例如非空、数字之类的,
action里调用一些业务逻辑的校验,最好将校验规则也脱离action单独出来。
select、checkbox和raido的动态显示
以下property中的元素都是LabelValueBean的形式
select的最简单
<html:select property="groupid">
<html:optionsCollection property="groupSelect"/>
</html:select>
radio的
<logic:iterate id="manage" name="accountForm" property="manageSelect" indexId="indexid" offset="0">
<html:radio property="manageid" value="${manage.value}"/>${manage.label}
</logic:iterate>
checkbox的
在formbean中selectedProduct是一个value形式的数组,内容是页面被选中的这些元素的value。
<logic:iterate id="product" name="accountForm" property="productSelect" indexId="indexid" offset="0">
<html:multibox property="selectedProduct">
${product.value}
</html:multibox>
${product.label}
</logic:iterate>
如果需要确省选中某项只要在reset方法里给对应的form里的变量赋上要选中项的value值就行了。
<logic:iterate id="item" name="list" scope="request" indexId="indexid" offset="0">
<tr>
<td height="30" align=center>${pageScope.indexid+1}</td>
<td align=center><a href='${ad.url}' target=_blank>${item.url}</a> </td>
<td align=center>${item.budget}</td>
<td align=center>${item.pvmin}</td>
<td align=center>${item.consumeall}元/${ad.pvall}次</td>
<td align=center>${item.consumeday}元/${ad.pvday}次</td>
<td align=center>
<html:link page="/manage.do" paramId="id" paramName="item" paramProperty="adid">编辑</html:link>
<html:link page="/delete.do" paramId="id" paramName="item" paramProperty="adid" onclick="return confirmDelete()">删除</html:link>
</td>
</tr>
</logic:iterate>
根据条件判断出哪个list
<logic:equal parameter="page" value="1">
<b>2006-12-1 至 2006-12-1 分日统计报告</b>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width="100%" borderColorLight=#cccccc
border=1>
<TR>
<TD width="20%" height="25" align="center" bgcolor="#cccccc"><B>日期</B></TD>
<TD width="15%" align="center" bgcolor="#cccccc"><B>次数</B></TD>
<TD width="25%" align="center" bgcolor="#cccccc"><B>金额</B></TD>
<TD width="40%" align="center" bgcolor="#cccccc"><B>所属类别</B></TD>
</TR>
<TR>
<TD width="8%" height="25" align="center"> </TD>
<TD align="center"> </TD>
<TD align="center"> </TD>
<TD align="center"> </TD>
</TR>
<TR>
<TD width="8%" height="25" align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
<TD align="center" bgcolor="#f0f0f0"> </TD>
</TR>
<TR>
<TD height="25" bgcolor="#f0f0f0"><B>总计</B></TD>
<TD height="25" bgcolor="#f0f0f0"><B>0次</B></TD>
<TD colSpan=1 rowSpan=2 bgcolor="#f0f0f0"><B>0元</B></TD>
<TD colSpan=1 rowSpan=2 bgcolor="#f0f0f0"> </TD>
</TR>
</TABLE>
</logic:equal>
LIST页面嵌套2层循环
grouplist是一个java.util.List<Group>
clientlist是Group中的一个变量,类型也是一个List,以下内容是显示grouplist中的内容并将group中的每个client也显示。
<logic:iterate id="group" name="grouplist" scope="request" indexId="indexid" offset="0">
<!-- 第一层循环grouplist -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#f0f0f0" height=24>
<td width="70%" height="25" align="left" bgcolor="#cccccc"> ${group.groupname} </td>
<td width="30%" align="right" bgcolor="#cccccc">
<a href="#">改名</a>
<html:link page="/deletegroup.do" paramId="id" paramName="group" paramProperty="groupid" onclick="return confirmDelete()">删除</html:link>
</td>
</tr>
</table>
<table width=100% border=0 cellpadding="3" cellspacing="1">
<logic:iterate id="client" name="group" property="clientlist" type="java.util.Vector" offset="0"> <tr>
<!-- 第二层循环clientlist -->
<td width=100%>
<html:multibox property="selecteduserids">
${client.value}
</html:multibox>
<a href='client_info.jsp?aid=${client.value}' target=_blank>${client.label}</a>
</td>
</tr>
</logic:iterate>
</table>
<br>
</logic:iterate>
一个form里有多个submit时 ,action里如何判断来自哪个submit提交的
<html:submit property="dosubmit" value=" 生成订单 "/>
if (request.getParameter("dosubmit") != null) {
。。。
}
表单中部分内容是根据用户状态动态生成的时,将生成的方法写在reset方法里
public void reset(ActionMapping mapping, HttpServletRequest request) {
provinceSelect = ProvinceSelect.getProvinceSelect();
this.manageid = -1;
this.province = "";
// this.groupid = -1;
this.selectedProduct = null;
Account a = (Account) request.getSession().getAttribute("user");
if (a != null) {
ManageSelect ms = new ManageSelect(a.getIAccountId());
this.setManageSelect(ms.getManageSelect());
GroupSelect gs = new GroupSelect(a.getIAccountId());
this.setGroupSelect(gs.getGroupSelect());
ProductSelect ps = new ProductSelect();
this.setProductSelect(ps.getProductSelect(a.getCProduct()));
}
}
要使用validation.xml验证,form类要继承org.apache.struts.validator.ValidatorForm
同时form类里没有validate验证方法。
个人认为validation只做一些书写规则的校验,例如非空、数字之类的,
action里调用一些业务逻辑的校验,最好将校验规则也脱离action单独出来。
select、checkbox和raido的动态显示
以下property中的元素都是LabelValueBean的形式
select的最简单
<html:select property="groupid">
<html:optionsCollection property="groupSelect"/>
</html:select>
radio的
<logic:iterate id="manage" name="accountForm" property="manageSelect" indexId="indexid" offset="0">
<html:radio property="manageid" value="${manage.value}"/>${manage.label}
</logic:iterate>
checkbox的
在formbean中selectedProduct是一个value形式的数组,内容是页面被选中的这些元素的value。
<logic:iterate id="product" name="accountForm" property="productSelect" indexId="indexid" offset="0">
<html:multibox property="selectedProduct">
${product.value}
</html:multibox>
${product.label}
</logic:iterate>
如果需要确省选中某项只要在reset方法里给对应的form里的变量赋上要选中项的value值就行了。





下载文件
