#副標=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-----