??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
下蝲的Y件包中已有自带配|文ӞZ使用方便作了一些修?br />
目录l构如下
JORAM-4.3.14
|
|---[CONFIG]
|
|
|---[lib]
|
|
|---start-server.bat
config中ؓ自带的配|文件每ơ启动可以选不同的配置
lib中ؓ所需要的jar?br />
主要介绍下修改的start-server.bat
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />Title 消息服务
@echo off
REM Verify if JORAM_HOME is well defined
set JORAM_HOME=%CD% //%CD%可以动态得到当前\径,避免了在L同设|JORAM_HOME的问?/font>
if not exist "%JORAM_HOME%\bin\admin.bat" goto nokHome
REM Verify if JAVA_HOME is well defined
if not exist "%JAVA_HOME%\bin\java.exe" goto nokJava
set CONFIG_DIR=%JORAM_HOME%\config
set JORAM_LIBS=%JORAM_HOME%\lib
set RUN_DIR=%JORAM_HOME%\run //服务启动时候会生成q个目录Q这里也会生成一些运行文?/font>
REM Building the Classpath
set CLASSPATH=%JORAM_LIBS%\joram-mom.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\joram-shared.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\JCup.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\jakarta-regexp-1.2.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\ow_monolog.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\jmxri.jar
set CLASSPATH=%CLASSPATH%;%JORAM_LIBS%\log4j-1.2.8.jar //如果用别的log apiq里需要修?/font>
set CLASSPATH=%CLASSPATH%;%RUN_DIR%
mkdir %RUN_DIR%
copy %CONFIG_DIR%\a3config.dtd %RUN_DIR%\a3config.dtd
copy %CONFIG_DIR%\a3debug.cfg %RUN_DIR%\a3debug.cfg
copy %CONFIG_DIR%\centralized_a3servers.xml %RUN_DIR%\a3servers.xml //q里注意centralized_a3servers.xml中的NullTransaction ҎNTransaction 才可以支持持久化
copy %CONFIG_DIR%\jndi.properties %RUN_DIR%\jndi.properties
cls
color A //指定DOS下字体颜?可用可不?/font>
echo %DATE% %time%
echo ------------------------
echo == 启动可持久性服?0 ==
echo ------------------------
start /D %RUN_DIR% /B %JAVA_HOME%\bin\java -classpath %CLASSPATH% fr.dyade.aaa.agent.AgentServer 0 ./s0
goto end
:nokHome
echo The JORAM_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:nokJava
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:end
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />
import com.opensymphony.xwork.Result;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.webwork.ServletActionContext;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
public class ExcelResult implements Result{
private HSSFWorkbook workbook;
private String filename;
private String contenttype;
public void execute(ActionInvocation invocation) throws Exception {
if(contenttype==null)
contenttype = "application/ms-excel";
if (workbook==null)
workbook = (HSSFWorkbook) invocation.getStack().findValue("workbook");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType(contenttype);
response.setHeader("Content-Disposition","attachment;Filename="+filename+".xls");
OutputStream os = response.getOutputStream();
workbook.write(os);
os.flush();
os.close();
}
public void setWorkbook(HSSFWorkbook workbook) {
this.workbook = workbook;
}
public void setFilename(String filename) {
this.filename = filename;
}
public void setContenttype(String contenttype) {
this.contenttype = contenttype;
}
}
视图做完之后做如下配|运行测?br />
package com.customer.action;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.webwork.ServletActionContext;
import com.dboperate.ResultGather;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ByteArrayInputStream;
import java.util.List;
import java.util.Map;
public class ExportExcelAction extends ActionSupport {
private HSSFWorkbook workbook;
public String execute() throws Exception {
return SUCCESS;
}
public String product() throws Exception {
try {
workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0, "厂商产品", (short) 1);
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell0 = row.createCell((short) 0);
HSSFCell cell1 = row.createCell((short) 1);
HSSFCell cell2 = row.createCell((short) 2);
HSSFCell cell3 = row.createCell((short) 3);
HSSFCell cell4 = row.createCell((short) 4);
HSSFCell cell5 = row.createCell((short) 5);
HSSFCell cell6 = row.createCell((short) 6);
HSSFCell cell7 = row.createCell((short) 7);
HSSFCell cell8 = row.createCell((short) 8);
HSSFCell cell9 = row.createCell((short) 9);
cell0.setEncoding(HSSFCell.ENCODING_UTF_16);//q里是设|编码保证中文正常显C?br /> cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
cell4.setEncoding(HSSFCell.ENCODING_UTF_16);
cell5.setEncoding(HSSFCell.ENCODING_UTF_16);
cell6.setEncoding(HSSFCell.ENCODING_UTF_16);
cell7.setEncoding(HSSFCell.ENCODING_UTF_16);
cell8.setEncoding(HSSFCell.ENCODING_UTF_16);
cell9.setEncoding(HSSFCell.ENCODING_UTF_16);
cell0.setCellValue("厂商?);
cell1.setCellValue("产品?);
cell2.setCellValue("重量");
cell3.setCellValue("星");
cell4.setCellValue("parama");
cell5.setCellValue("paramb");
cell6.setCellValue("paramc");
cell7.setCellValue("paramd");
cell8.setCellValue("状?);
cell9.setCellValue("备注");
} catch (Exception e) {
}
return SUCCESS;
}
public HSSFWorkbook getWorkbook() {
return workbook;
}
}
Xwork.xml中配|加?br />
<result-type default="true" name="freemarker"
<result-type name="excel" class="com.customer.resulttype.ExcelResult"/>
</result-types>
<action name="exportExcel" class="com.customer.action.ExportExcelAction">
<result name="success" type="excel">
<param name="filename">productparam>
</result>
</action>
public String update() throws Exception {
....
}
public String delete() throws Exception {
....
}
public String list() throws Exception {
....
}
DAO
下面是DAO接口
public interface BaseDao {
public int insert(Object form);
public int update(Object form);
public int delete(Object form);
public int delete(int[] id);//q里是ؓ了支持批量删?br /> public Map getInfo(Object form);
public List getList();
public void getList(Pagination page);//q里没有q回|内详。。。?br />}
EXTENDS
扩展部分
1 BaseAction
q里增加了一些公用方便的功能Q便于其他ACTIONl承Q共?br />2 DaoSupport
q里也是一些公用的功能QDao中用的大部分SQL都是配置在外部配|文件中
3DaoFactory
public class DaoFactory {
public static BaseDao getDao(String daoKey){
if("user".equals(daoKey)) //q样的方式可以通过在XWORK.XML中配|ACTION使用哪个DAOQ静态注入)
return new UserDao();
else
return null;
}
}
数据库是MYSQL5
CREATE TABLE `usertbl` (
`User_ID` int(11) NOT NULL auto_increment,
`username` varchar(50) default NULL,
`password` varchar(50) default NULL,
`truename` varchar(50) default NULL,
`usersex` tinyint(4) default NULL,
`useremail` varchar(50) default NULL,
PRIMARY KEY (`User_ID`)
)
源码下蝲地址
http://www.migti.com/download.ww
学习的时候看了网上的一些配|教E,没有辑ֈ惌的结?BR>查了好多资料才弄出来Q随后后自己整理Z个配|方?BR>
web.xml
// q里不需要配|字W过滤,|上有的例子加了Q实际上
webwork.properties里设|如下就可以了页面也是GBK
webwork.locale=zh_CN
webwork.i18n.encoding=GBK
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?BR><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.atlassian.xwork.ext.ResolverSetupServletContextListener</listener-class>
</listener>
<!--
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/webwork.tld</taglib-location>
</taglib>
</web-app>
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?BR>
xwork.xml
==================---------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="users" extends="webwork-default"
externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">
<interceptors>
<interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor"/>
<interceptor-stack name="myDefaultWebStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="reference-resolver"/>
<interceptor-ref name="model-driven"/>
<interceptor-ref name="params"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myDefaultWebStack"/>
<action name="blogUser" class="com.jsblog.action.BlogUserAction">
<external-ref name="baseDao">baseDaoTarget</external-ref> //q里是把applicationContext里配|的DAO 注入action?action里要有baseDao属?BR> <result name="success">/add.htm</result>
</action>
-------------------------------------------------------------------------
applicationContext.xml
---------------------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="no" default-dependency-check="none" default-lazy-init="false">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsblog;SelectMethod=cursor</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>jfy</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>com/jsblog/BlogUserForm.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="baseDaoTarget" class="com.jsblog.dao.BlogUserDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
</beans>
---------------------------------------------------------------------------
BlogUserDao.java
---------------------------------------------------------------------------
package com.jsblog.dao;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import org.springframework.orm.hibernate.HibernateCallback;
import org.springframework.orm.hibernate.SessionFactoryUtils;
import com.jsblog.BlogUserForm;
import java.io.Serializable;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
public class BlogUserDao extends HibernateDaoSupport implements BaseDao {
public void insert(BlogUserForm bloguser) {
getHibernateTemplate().save(bloguser);
}
}
<VERIFY xmlns="<KEY>guid</KEY>
<IP>string</IP>
</VERIFY>
</soap:Body>
verify?名ؓ xmlns属性的时候就会报?br />
附一个xmldc?br />import org.dom4j.io.XMLWriter;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.io.FileWriter;
import org.dom4j.io.OutputFormat;
import java.io.File;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
public class XmlTool {
private String filename;
private SAXReader saxReader = null;
private Document document = null;
private Element cfgElement = null;
public XmlTool(String filename) {
this.filename = filename;
try {
saxReader = new SAXReader();
document = saxReader.read(new File(filename));
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void setValue(String key, String value) {
int returnValue = 0;
try {
((Element)( document.selectSingleNode(key))).setText(value);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public String getValue(String key) {
int returnValue = 0;
try {
return ((Element)( document.selectSingleNode(key))).getText();
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
public int writeToFile() {
int returnValue = 0;
try {
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.close();
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
public int formatXMLFile(String filename) {
int returnValue = 0;
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
XMLWriter output = null;
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
output = new XMLWriter(new FileWriter(new File(filename)), format);
output.write(document);
output.close();
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
public class SqlModify
{
private String SQL;
static SqlModify sqlcom = null;
private DBConnManager conn = null;
private Connection con = null;
private PreparedStatement stmt = null;
public SqlModify()
{
}
public SqlModify(boolean connect)
{
if(connect)
connect();
}
public static int modify(String sqlStr)
{
if(sqlcom==null)
sqlcom = new SqlModify();
return sqlcom.exec(sqlStr);
}
public PreparedStatement getStmt()
{
return stmt;
}
public void connect(String sqlStr)
{
try{
connect();
stmt = con.prepareStatement(sqlStr);
}catch(Exception e){
e.printStackTrace();
}
}
public void connect()
{
try{
conn = DBConnManager.getInstance();
con = conn.getConnection("mssql");
}catch(Exception e){
}
}
public int exesqlandClose()
{
int result = exesql();
closeall();
return result;
}
public int exesql()
{
try{
return stmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
return -1;
}
}
public void setSql(String sql)
{
try{
stmt = con.prepareStatement(sql);
}catch(Exception e){
e.printStackTrace();
}finally{
}
}
public int exec(String sqlStr)
{
int flag=-2;
try{
connect(sqlStr);
int value=stmt.executeUpdate();
flag=value;
}catch(java.lang.Exception ex){
ex.printStackTrace();
}finally{
closeall();
}
return flag;
}
public void closeall()
{
try{
if(stmt!=null)
{
stmt.close();
}
if(conn!=null)
{
conn.releaseConnection("mssql",con);
}
}catch(Exception e){
e.printStackTrace();
}
}
public void setString(int col,String value)
{
try{
stmt.setString(col,value);
}catch(java.lang.Exception ex){
ex.printStackTrace();
}
}
public void setInt(int col,int value)
{
try{
stmt.setInt(col,value);
}catch(java.lang.Exception ex){
ex.printStackTrace();
}
}
public void setLong(int col,long value)
{
try{
stmt.setLong(col,value);
}catch(java.lang.Exception ex){
ex.printStackTrace();
}
}
public void setFloat(int col,float value)
{
try{
stmt.setFloat(col,value);
}catch(java.lang.Exception ex){
ex.printStackTrace();
}
}
}
</td>
</tr>
</table>
<%
}
%>
-------------------------------------------------------------------------------------------------------
myRedirect.java
package com.util;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
public class myRedirect //对url的{换类
{
public static String dealurl(HttpServletRequest request)
{
String url = "";
url = request.getRequestURL()+"?";
url +=param(request);
if(url.indexOf("&")>-1)
url=url.replaceAll("&","@#@");//实际上就是把?amp;的字W{化成了@#@
return url;
}
public static String geturl(String url)//q个是还原方?BR> {
if(url.indexOf("@#@")>-1)
url=url.replaceAll("@#@","&");
return url;
}
public static String param(HttpServletRequest request)
{
String url = "";
Enumeration param = request.getParameterNames();//得到所有参数名
while(param.hasMoreElements())
{
String pname = param.nextElement().toString();
url += pname+"="+request.getParameter(pname)+"&";
}
if(url.endsWith("&"))
{
url = url.substring(0,url.lastIndexOf("&"));
}
return url;
}
}
q样d览器就会自动{到用户刚刚请求的地址