查看项目classpath路径下的版本信息x.xml文件并解析,通过servlet重定向
servlet代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.changx.cbf.domain.entity.version.War;
import com.changx.cbf.service.IReadVersionService;
import net.sf.json.JSONObject;
public class ReadVersionServlet extends HttpServlet{
private IReadVersionService _readVersionService;
/**
* (non-Javadoc)
* @see javax.servlet.GenericServlet#init()
*/
@Override
public void init () throws ServletException {
super.init ();
ServletContext servletContext = this.getServletContext ();
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext (servletContext);
_readVersionService = (IReadVersionService) ctx.getBean ("readVersionService");
}
/**
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost (req, resp);
}
/**
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
War war = _readVersionService.getVersionContent ();
JSONObject jsonObject = JSONObject.fromObject (war);
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/json; charset=utf-8");
String jsonStr = jsonObject.toString ();
PrintWriter out = null;
try {
out = resp.getWriter();
out.write(jsonStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
}
/**
* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy () {
super.destroy ();
}
}
服务实现代码
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.ResourceUtils;
import com.changx.cbf.domain.dto.version.DependencyDto;
import com.changx.cbf.domain.dto.version.WarDto;
import com.changx.cbf.domain.entity.version.Dependency;
import com.changx.cbf.domain.entity.version.War;
import com.changx.cbf.service.IReadVersionService;
import cbf.changx.cbfutil.file.JaxbUtil;
/**
*<p>类说明:
*
*
*@author:zouxianglin
*@version 1.00
*
*/
public class ReadVersionServiceImpl implements IReadVersionService {
/**
* _logger:TODO
*
* @since Ver 1.1
*/
Log _logger = LogFactory.getLog (ReadVersionServiceImpl.class);
/**
* (non-Javadoc)
* @see com.changx.cbf.service.IReadVersionService#getVersionContent()
*/
@SuppressWarnings ("resource")
@Override
public War getVersionContent () {
try {
//获取当前应用classpath路径下的version文件
//Thread.currentThread ().getContextClassLoader ().getResource ("/").getPath ();
File file = ResourceUtils.getFile ("classpath:version.xml");
InputStream in = new FileInputStream (file);
InputStreamReader read = new InputStreamReader (in, "utf-8");
BufferedReader bufferedReader = new BufferedReader (read);
StringBuffer xmlContent = new StringBuffer ();
String content = "";
while((content = bufferedReader.readLine ()) != null){
xmlContent.append (content);
}
read.close ();
//通过工具类把xml转换成bean
WarDto warDto = JaxbUtil.converyToJavaBean (xmlContent.toString (), WarDto.class);
War war = new War ();
List<Dependency> dependencies = new ArrayList <Dependency> ();
//把解析出来的数据添加到实体存储
String warName = warDto.getWarName ();
String warVersion = warDto.getWarVersion ();
String updateLog = warDto.getUpdateLog ();
war.setWarName (warName);
war.setWarVersion (warVersion);
war.setUpdateLog (updateLog);
List<DependencyDto> list = warDto.getDependencies ();
for (DependencyDto dependencyDto : list) {
Dependency dependency = new Dependency();
String groupId = dependencyDto.getGroupId ();
String artifactId = dependencyDto.getArtifactId ();
String version = dependencyDto.getVersion ();
dependency.setGroupId (groupId);
dependency.setArtifactId (artifactId);
dependency.setVersion (version);
dependencies.add (dependency);
}
war.setDependencies (dependencies);
return war;
}
catch (Exception e) {
_logger.error (e);
e.printStackTrace();
}
return null;
}
}
xml和实体转换工具类
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class JaxbUtil {
public static String convertToXml(Object obj) throws JAXBException {
return convertToXml(obj, "UTF-8");
}
/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
* @throws JAXBException
*/
public static String convertToXml(Object obj, String encoding) throws JAXBException {
String result = null;
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
return result;
}
/**
* xml转换成JavaBean
* @param xml
* @param c
* @return
* @throws JAXBException
*/
@SuppressWarnings("unchecked")
public static <T> T converyToJavaBean(String xml, Class<T> c) throws JAXBException {
T t = null;
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
t = (T) unmarshaller.unmarshal(new StringReader(xml));
return t;
}
}
js中ajax请求
$.ajax({
method:'post',
dataType : "json",
url:appUrl + '/lookVersion',
success:function(data){
$('#versionDialog').dialog('open').dialog('setTitle', appName + "应用版本查询 ");
$("#versionForm").form("load", data);
$('#dependenciesTable').datagrid('loadData', data.dependencies);
},
error:function(){
$.messager.alert('提示', "查看版本信息失败!", 'info');
},
fail:function(){
$.messager.alert('提示', "查看版本信息失败!", 'info');
}
});
web.xml配置
<servlet>
<servlet-name>ReadVersionServlet</servlet-name>
<servlet-class>com.xxx.xxx.manager.servlet.ReadVersionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ReadVersionServlet</servlet-name>
<url-pattern>/lookVersion</url-pattern>
</servlet-mapping>