#副標=Java Code Generator
#大標=XDoclet入門篇
#作者=文/歐宣修
-----box-----
#此檔用來設定一些常用屬性
jboss.home=D:/jboss322_jms
xdoclet.lib.dir=D:/KM/software/java/xdoclet/xdoclet-bin-1.2.1/xdoclet-1.2.1/lib
-----end-----
-----box-----
#程式1
-----end-----
-----box-----
#程式2
指定Servlet名稱
XDoclet會自動將此Servlet完整
Pacakge與Name填入
-----end-----
-----box-----
#程式3
@web.servlet name設定值
指定Servlet Mapping URL
-----end-----
-----box-----
#程式4
CREATE TABLE IF NOT EXISTS
USERACCOUNT
(
USERID VARCHAR(10) NOT NULL,
PASSWD VARCHAR(10),
ROLENAME VARCHAR(20) NOT NULL,
PRIMARY KEY (USERID)
);
-----end-----
-----box-----
#程式5
/**
* 取得使用者帳號檔
* Last Modified Date:2004/07/03
//……(1)
* @author Senshaw
* @web.servlet name="GetUseraccount"
* @web.servlet-mapping url-pattern=
"/getUseraccount"
*/
public class UseraccountServlet extends HttpServlet {
略…
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
//……(2)
getUseraccount(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
getUseraccount(request, response);
}
private void getUseraccount(HttpServletRequest
request, HttpServletResponse response) {
//……(3)
request.getSession().setAttribute("header",
"帳號\t密碼\t角色");
request.getSession().setAttribute("column",
"userid\tpasswd\trolename");
StringBuffer sql = new StringBuffer();
sql.append("select * from useraccount ");
HashData hd = dao.executeQuery(sql.toString());
log.info("hd rowcount="+hd.getRowcount());
//……(4)
request.getSession().setAttribute("data", hd);
try {
//……(5)
response.sendRedirect("transferExcel?
excel_name=useraccount&header_name=header&
column_name=column&data_name=data");
} catch (Exception ex) {
log.error(ex);
}
}
}
-----end-----
-----box-----
#程式6
/**
* 轉出Excel檔
* 需輸入下列Parameter
* excel_name:Excel檔名(不含.xls)
* header_name:存在session scope的標題變數名稱
,以'\t'問隔
* column_name:存在session scope的資料欄位變
數名稱,以'\t'問隔,須與header_name對應
* data_name:存在session scope的內容變數名稱
* 呼叫前須將標題、內容置入session
* Last Modified Date:2003/05/19
* @author Senshaw
* @version 1.0
//……(1)
* @web.servlet name="TransferExcel"
* @web.servlet-mapping url-pattern="/transferExcel"
*/
public class TransferExcel extends HttpServlet {
…
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
transferExcel(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
transferExcel(request, response);
}
private void transferExcel(HttpServletRequest
request, HttpServletResponse response) {
//……(2)
response.setContentType(
"application/msexcel;charset=MS950");
//……(3)
String header_name = request.getParameter(
"header_name");
String data_name = request.getParameter(
"data_name");
log.info("data_name="+data_name);
String excel_name = request.getParameter(
"excel_name");
String column_name = request.getParameter(
"column_name");
HashData hd = (HashData) request.getSession().
getAttribute(data_name);
//……(4)
response.setHeader("Content-disposition",
"inline; filename=" + excel_name + ".xls");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException ex) {
log.error("TransferExcel error ex:" + ex);
}
//標題
String header = (String) request.getSession().
getAttribute(header_name);
//……(5)
out.println(header);
log.debug("header=" + header);
log.debug("data rowcount=" + hd.getRowcount());
String columns = (String) request.getSession().
getAttribute(column_name);
log.debug("columns=" + columns);
//內容
for (int row = 1; row <= hd.getRowcount(); row++)
{
//……(6)
StringTokenizer st = new StringTokenizer(
columns, "\t");
while (st.hasMoreTokens()) {
String col_name = st.nextToken();
log.debug("col_name=" + col_name);
String value = hd.getString(row, col_name);
log.debug("value=" + value);
out.print(value + "\t");
}
out.print("\n");
}
}
}
-----end-----
-----box-----
#程式7
-----end-----
-----box-----
ant gen-web
-----end-----
-----box-----
#程式8
TransferExcel
com.uniinfornet.framework.servlet.
TransferExcel
GetUseraccount
idv.senshaw.codegen.servlet.
UseraccountServlet
TransferExcel
/transferExcel
GetUseraccount
/getUseraccount
-----end-----
-----box-----
ant deploy-web
-----end-----