11 |
|
|
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
◆java.lang包下的80%以上的类的功能的灵活运用。
◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、正则表达式、zip、以及时间、随机数、属性、资源和Timer.
◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆java.math包下的100%的内容。
◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。
◆java.text包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
|
jquery 图片飘浮 |
jquery |
|
$.fn.floatPic = function(option) {
var defaultOption = {
img:'',
sleep:500,
step:'',
xStep:10,
yStep:10,
xFlag:true,
yFlag:true,
initLeft:0,
initTop:0
};
var leftVal,
topVal;
var yFlag,
xFlag;
var step;
var el;
var obj = $(this);
var t;
var screenWidth = $(document).width(); //文档窗口大小
var screenHeight = $(document).height(); //文档窗口高度
var objWidth, //飘浮物宽度
objHeight; //漂浮物高度
if (option)
{
defaultOption = $.extend(defaultOption,option);
}
this.init = function(){
leftVal = obj.left;
topVal = obj.top;
alert(leftVal)
xFlag = true;
yFlag = true;
step = defaultOption.step;
objWidth = obj.width();
objHeight = obj.height();
console.log(this);
alert(this.id);
//this.move()
//obj.animate({left:defaultOption.initLeft + "px", top:defaultOption.initTop + "px"});
t = setInterval(this.move,defaultOption.sleep); //this发生改变 指向window
},
this.move = function(){
leftVal = leftVal + defaultOption.xStep * (xFlag ? 1 : -1);
topVal = topVal + defaultOption.yStep * (yFlag ? 1 : -1);
console.log(leftVal + " " + topVal)
if (xFlag && leftVal >= screenWidth - objWidth)
{
leftVal = screenWidth - objWidth;
xFlag = false;
}
if (!xFlag && leftVal <= 0)
{
leftVal = 0;
xFlag = true;
}
if (yFlag && topVal >= screenHeight - objHeight)
{
topVal = screenHeight - objHeight;
yFlag = false;
}
if (!yFlag && topVal <= 0)
{
topVal = 0;
yFlag = true;
}
obj.animate({left:leftVal + "px",top:topVal + "px"});
clearInterval(t);
}
this.init();
}
|
eclipse 编辑区皮肤更改 |
|
|
下载地址:http://eclipsecolorthemes.org/
使用方式:
打开myeclipse。file-import-general-preferences
选择下载的epf主题文件
|
MAVEN仓库地址 |
|
|
共有的仓库
http://repo1.maven.org/maven2/
http://repository.jboss.com/maven2/
http://repository.sonatype.org/content/groups/public/
http://mirrors.ibiblio.org/pub/mirrors/maven2/org/acegisecurity/
http://maven.glassfish.org/content/groups/glassfish/
https://nexus.sourcesense.com/nexus/content/repositories/public/
私有的仓库
http://repository.codehaus.org/
http://snapshots.repository.codehaus.org/
http://people.apache.org/repo/m2-snapshot-repository
http://people.apache.org/repo/m2-incubating-repository/
|
11 |
|
|
function delete_btn_click(){
var row = check();
if(row != null){
var param = {
type:'post',
url:'infor!deleteData.action',
data:{'i':row.userId},
suc:function(data){
msgInfo(data.resultMsg);
if(data.result)
$("#digit").datagrid('reload',s);
},
error:function(){
msgInfo('用户信息删除业务操作失败');
}
}
openAjax(param);
}
};
function enableUser(f,i){
var param = {
type:'post',
url:'infor!enable.action',
data:{'i':i,'f':f},
suc:function(data){
msgInfo(data.resultMsg);
if(data.result)
$("#digit").datagrid('reload',s);
},
error:function(){
msgInfo('用户状态改变业务操作失败');
}
}
openAjax(param);
}
|
普通头文件收藏 |
|
|
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<link rel="stylesheet" type="text/css"
href="<s:url value='/js/themes/default/easyui.css' />" />
<link rel="stylesheet" type="text/css"
href="<s:url value='/js/themes/icon.css' />" />
<script type="text/javascript" src="<s:url value='/js/jquery.js' />"></script>
<script type="text/javascript"
src="<s:url value='/js/jquery.easyui.js' />"></script>
<script type="text/javascript"
src="<s:url value='/js/easyui-lang-zh_CN.js' />"></script>
<script type="text/javascript">
var path = '${pageContext.request.contextPath}';
var defautParam = {
modal: true,
shadow: true,
closed: true,
resizable:false,
draggable:false,
closable:false,
collapsible:false,
minimizable:false,
maximizable:false
}
function initWin(id,params) {
if(params)
$.extend(defautParam,params);
if(id)
$("#"+id).window(defautParam);
}
function openWin(id,flag){
$("#"+id).window({closed:flag});
}
function msgInfo(content){
$.messager.alert("友情提示",content,"info");
}
function msgError(content){
$.messager.alert("友情提示",content,"warning");
}
function showProcess(isShow, msg) {
if (!isShow) {
$.messager.progress('close');
return;
}
var win = $.messager.progress({
title: '友情提示',
msg: msg
});
}
document.oncontextmenu = function(){
return true;
}
function confirm(msg,call) {
$.messager.confirm("提示", msg, function (r) {
if (r) {
if(typeof call == 'function'){
call();
}
}
});
}
var defaultAjaxParams = {
url:'',
type:'get',
cache:false,
async:true,
data:{},
dataType:'json',
params:{}
}
function openAjax(params) {
var param;
if(params)
param = $.extend({},defaultAjaxParams,params);
if(param.url == ""){
msgInfo('请求地址为空');
return;
}
if(typeof param.suc != 'function'){
msgInfo('回调函数不符合规范');
return;
}
$.ajax({
type:param.type,
url:path + "/" + param.url,
cache:param.cache,
data:param.data,
dataType:param.dataType,
success:function(data){
if (data){
param.suc(data,param.params);
}
},
error:function(){
if(typeof param.error == "function"){
param.error();
}
}
})
}
//全局的ajax访问,处理ajax清求时sesion超时
$.ajaxSetup({
complete:function(XMLHttpRequest,textStatus){
if(XMLHttpRequest && XMLHttpRequest.getResponseHeader){
var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,
if(sessionstatus == "timeout"){
confirm("会话超时结束,请重新登录",redirectLogin);
}
}
},
error:function(){
}
});
function redirectLogin() {
if(parent.window)
parent.window.location.href=path + "/login.jsp";
else
window.location.href=path + "/login.jsp";
}
function loginOut() {
$.messager.confirm("提示", "是否要退出系统?", function (r) {
if (r) {
$.ajax({
type:'post',
url:path + '/user!logout.action',
dataType:'json',
cache:false,
success:function(data) {
if(data.result) {
window.location.href = path + "/index.jsp";
}
},
error:function(){
msgInfo("退出系统失败");
}
});
}
});
};
function initSelect(id,data,key,val) {
var len = data.length;
var obj;
for(var i = 0; i < len; i++){
obj = data[i];
$("#"+id).append("<option value='"+obj[key]+"'>"+obj[val]+"</option>");
}
}
function removeInvalid(id) {
$("#" + id).removeClass('validatebox-invalid');
}
var MAMS = {};
//自定义命名空间
MAMS.namespace = function(str)
{
var arr = str.split(".");
var o = mams;
for (i = (arr[0] == "MAMS") ? 1 : 0 ; i < arr.length; i++)
{
o[arr[i]] = o[arr[i]] || {};
o = o[arr[i]];
}
}
</script>
|
ajax的session过期检验 |
|
|
public class CheckUrlInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation action) throws Exception {
ActionContext actionContext = action.getInvocationContext();
HttpServletRequest request = ServletActionContext.getRequest();
Map<String, Object> sessions = actionContext.getSession();
if (request.getHeader("x-requested-with") != null &&
request.getHeader("x-requested-with").equalsIgnoreCase(
"XMLHttpRequest")) {
if (ObjectUtils.isObjectNotNull(sessions)) {
UserInfor infor = (UserInfor) sessions.get(ConstantKey.SESSION_LOGIN_KEY);
if (ObjectUtils.isObjectNotNull(infor))
return action.invoke();
else {
HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("sessionstatus", "timeout");//在响应头设置session状态
return null;
}
}
} else
return action.invoke();
return null;
}
}
|
tab页面制作 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
body{font-size:12px;}
* {
margin:0;padding:0;list-style:none;
}
#menu li {
text-align:center;float:left;padding:5px;margin-right:2px;width:50px;cursor:pointer;
}
#menu li.tabFocus {
width:50px;font-weight:bold;background-color:#f3f2e7;border:solid 1px #666;
border-bottom:0;z-index:100;position:relative;
}
#content{
width:260px;height:80px;padding:10px;background-color:#f3f2e7;clear:left;
border:solid 1px #666;position:relative;top:-1px;
}
#content li{display:none;}
#content li.conFoncus{
display:block;
}
</style>
</HEAD>
<BODY>
<ul id="menu">
<li class="tabFocus">家居</li>
<li>电气</li>
<li>二手</li>
</ul>
<ul id="content">
<li class="conFoncus">我是家居的内容</li>
<li>我是电气的内容</li>
<li>我是二手的内容</li>
</ul>
<script type="text/javascript" src="link/jquery.js"></script>
<script>
$("#menu li").each(function(index){
$(this).click(function(){
$(this).addClass("tabFocus");
$(this).siblings().removeClass("tabFocus");
$("#content li.conFoncus").removeClass("conFoncus");
$("#content li:eq("+index+")").addClass("conFoncus");
})
})
</script>
</BODY>
</HTML>
|
简单书籍列表操作 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
body{font-size:12px;}
table{
width:360px;border-collapse:collapse;
}
table tr th,td {
border:solid 1px #ccc;text-align:center;
}
table tr td img{
border:solid 1px #ccc;padding:3px;width:42px;height:60px;cursor:hand;
}
table tr td span{
float:left;
padding-left:12px;
}
table tr th{
background-color:#ccc;height:32px;
}
.clsImg{
position:absolute;border:solid 1px #ccc;padding:3px;width:185px;height:320px;background-color:#eee;display:none;
}
.btn{
border:solid 1px #666;padding:2px;width:50px;
}
</style>
</HEAD>
<BODY>
<table>
<tr>
<th>选项</th>
<th>编号</th>
<th>封面</th>
<th>购书人</th>
<th>性别</th>
<th>购书价</th>
</tr>
<tr id="0">
<td>
<input id="checkbox1" type="checkbox" value="0"/>
</td>
<td>1001
</td>
<td><img src="images/1.jpg" />
</td>
<td>李晓明
</td>
<td>男
</td>
<td>35.60
</td>
</tr>
<tr id="2">
<td>
<input id="checkbox1" type="checkbox" value="0"/>
</td>
<td>1001
</td>
<td><img src="images/2.jpg" />
</td>
<td>李小贼
</td>
<td>男
</td>
<td>36.60
</td>
</tr>
<tr id="2">
<td>
<input id="checkbox3" type="checkbox" value="0"/>
</td>
<td>1001
</td>
<td><img src="images/3.jpg" />
</td>
<td>李大致
</td>
<td>男
</td>
<td>60.60
</td>
</tr>
</table>
<table>
<tr>
<td style="text-align:left;height:28px;">
<span>
<input id="chkAll" type="checkbox"/>全选
</span>
<span>
<input type="button" id="btnDel" value="删除" class="btn">
</span>
</td>
</tr>
</table>
<img id="imgTip" class="clsImg" src=""/>
<script type="text/javascript" src="link/jquery.js"></script>
<script>
$("table tr td img").hover(function(e){
var OriginImage=new Image();
OriginImage.src = this.src;
$("#imgTip").attr("src",this.src)
.css({"width":OriginImage.width + "px","height":OriginImage.height + "px"})
.css({"top":(e.pageY + 15) + "px",
"left":(e.pageX + 5) + "px"})
.show(100);
},
function(e) {
$("#imgTip").hide();
}
)
$("#chkAll").click(function(){
var status = $(this).is(":checked");
if (status)
{
$("table tr td input:checkbox").attr("checked",true);
} else {
$("table tr td input:checkbox").attr("checked",false);
}
})
$("#btnDel").click(function(){
var len = $("table tr td input:checkbox:checked:not('#chkAll')").length;
alert(len)
for (var i = 0; i < len; i++ )
{
$("table tr[id='"+i+"']").remove();
}
})
</script>
</BODY>
</HTML>
|
简单书籍列表操作 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
body{font-size:12px;}
#divFrame{border:solid 1px #666;width:301px;overflow:hidden;}
#divFrame .clsHead{
background-color:#eee;
padding:8px;
height:18px;
cursor:hand
}
#divFrame .clsHead h3{
padding:0px;
margin:0px;
float:left;
}
#divFrame .clsHead span{
float:right;
margin-top:3px;
}
#divFrame .clsContent{
padding:8px;
}
#divFrame .clsContent ul {
list-style-type:none;
margin:0px;
padding:0px;
}
#divFrame .clsContent ul li {
float:left;
width:95px;
height:23px;
line-height:23px;
}
#divFrame .clsBot{
float:right;
padding-top:5px;
padding-bottom:5px;
}
.getFocus(
background-color:#eee;
}
</style>
</HEAD>
<BODY>
<div id="divFrame">
<div class="clsHead"><h3>图书分类</h3><span>收缩</span></div>
<div class="clsContent">
<ul>
<li><a href="javascript:void(0);">小说<i>(1110)</i></li>
<li><a href="javascript:void(0);">文艺<i>(230)</i></li>
<li><a href="javascript:void(0);">青春<i>(1430)</i></li>
<li><a href="javascript:void(0);">少儿<i>(1560)</i></li>
<li><a href="javascript:void(0);">小说<i>(1110)</i></li>
<li><a href="javascript:void(0);">生活<i>(870)</i></li>
<li><a href="javascript:void(0);">社科<i>(1460)</i></li>
<li><a href="javascript:void(0);">管理<i>(1450)</i></li>
<li><a href="javascript:void(0);">计算机<i>(1780)</i></li>
<li><a href="javascript:void(0);">教育<i>(930)</i></li>
<li><a href="javascript:void(0);">工具书<i>(3450)</i></li>
<li><a href="javascript:void(0);">引进版<i>(980)</i></li>
<li><a href="javascript:void(0);">其他类<i>(3230)</i></li>
</ul>
</div>
<div class="clsBot"><a href="javascript:void(0);">简化</a>
</div>
<script type="text/javascript" src="link/jquery.js"></script>
<script>
$(function(){
$(".clsHead span").click(function(){
if ($(".clsContent").is(":visible"))
{
$(".clsContent").css("display","none");
$(this).text("展开")
} else {
$(".clsContent").css("display","block");
$(this).text("收缩")
}
})
$(".clsBot a").click(function(){
var text = $(this).text();
if (text == "简化")
{
$(".clsContent ul li:gt(4)").hide();
$(this).text("更多");
} else {
$(".clsContent ul li:gt(4)").show();
$(this).text("简化");
}
})
})
</script>
</BODY>
</HTML>
|
数组的简单操作 |
|
|
int[] a = {1,2,3,4};
System.out.println(a);
System.out.println(Arrays.toString(a));
System.out.println(StringUtils.center("转化为列表", 10, "="));
Integer[] b = new Integer[]{1,2,3,4};
List<Integer> list = Arrays.asList(b);
System.out.println(list.size());
System.out.println(StringUtils.center("两数组相加", 10, "="));
int[] c = {1,2};
int[] d = {3,4};
int[] e = ArrayUtils.addAll(c, d);
System.out.println("size=" + e.length);
System.out.println(StringUtils.center("数组删除指定索引数据", 10, "="));
int[] f = {1,2,3,4};
int[] g = ArrayUtils.removeElement(f, 2);
System.out.println(Arrays.toString(g));
System.out.println(StringUtils.center("数组转为set", 10, "="));
Integer[] m = {1,1,2,3};
Set<Integer> set = new HashSet<Integer>(Arrays.asList(m));
System.out.println(set);
|
exception 拦截器 |
|
|
/**
* 异常拦截器
*/
public class ExceptionInteceptor extends AbstractInterceptor {
private Logger log = Logger.getLogger("exception");
public String intercept(ActionInvocation actionInvocation) {
HttpServletRequest request = (HttpServletRequest) actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_RESPONSE);
String errorMsg = null;
String result = "error";
try {
result = actionInvocation.invoke();
} catch (Exception e) {
if (e instanceof RuntimeException) {
RuntimeException runtimeException = (RuntimeException)e;
errorMsg = runtimeException.getMessage();
log.error(errorMsg, runtimeException);
} else {
log.error(e);
}
if (StringUtils.isNotBlank(errorMsg)) {
if (isAjaxRequest(request)) {
sendErrorForAjax(response, errorMsg);
result = null;
}
}
}
log.info(result);
return result;
}
private boolean isAjaxRequest(HttpServletRequest request) {
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
return true;
} else {
return false;
}
}
private void sendErrorForAjax(HttpServletResponse response, String msg) {
response.setCharacterEncoding("utf-8");
MessageBean message = new MessageBean(msg);
PrintWriter out;
try {
out = response.getWriter();
out.println(JSONObject.fromObject(message));
} catch (IOException e) {
log.error("ajax输出错误信息失败", e);
}
}
}
|
jQuery trigger 和 bind的使用 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script src="link/jquery.js"></script>
</HEAD>
<BODY>
<p>sdfsdfsdfsdf</p>
<script>
$("p").bind("click",{a:1,b:2}, function(event,a,b){
alert(event.pageX);
alert(a);
alert(b);
alert(event.data.a);
alert(event.data.b);
})
//$("p").trigger("click",[1,2]);
var e = jQuery.Event("click");
e.a = 10; //此处会被{a:1,b:2}值覆盖
e.b = 11;
$("p").trigger(e);
</script>
</BODY>
</HTML>
|
javascript的逻辑运算符 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script type="text/javascript">
var right;
var left;
var result;
right = "";
left="left1";
result = left && right; //&&当左边为true的时候,看右边的值
alert(result);
result = left || right; //||当左边卫true的时候,看左边的值
alert(result);
</script>
</BODY>
</HTML>
|
Ehcache实现缓存 |
|
|
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheException;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class EhcacheEngine implements CacheEngine {
private CacheManager cacheManager = null;
public void add(String key, String value) {
add("", key, value);
}
@Override
public void add(String fqn, String key, String value) {
if (!this.cacheManager.cacheExists(fqn)) {
try {
this.cacheManager.addCache(fqn);
} catch (CacheException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Cache cache = this.cacheManager.getCache(fqn);
cache.put(new Element(key, value));
}
@Override
public Object get(String fqn, String key) {
try {
if (!this.cacheManager.cacheExists(fqn)) {
return null;
}
Cache cache = this.cacheManager.getCache(fqn);
Element ele = cache.get(key);
if (ele != null) {
return ele.getValue();
}
} catch(CacheException e) {
e.printStackTrace();
}
return null;
}
@Override
public Object get(String fqn) {
if (!this.cacheManager.cacheExists(fqn)) {
return null;
}
return this.cacheManager.getCache(fqn);
}
@Override
public Collection getValues(String fqn) {
try {
if (!this.cacheManager.cacheExists(fqn)) {
return null;
}
Cache cache = this.cacheManager.getCache(fqn);
List valueList = new ArrayList(cache.getSize());
Iterator<String> it = cache.getKeys().listIterator();
Element ele = null;
while (it.hasNext()) {
ele = cache.get(it.next());
valueList.add(ele);
}
return valueList;
} catch(CacheException e) {
e.printStackTrace();
}
return null;
}
@Override
public void init() {
// TODO Auto-generated method stub
try {
this.cacheManager = cacheManager.create();
} catch (CacheException e) {
e.printStackTrace();
}
}
@Override
public void remove(String fqn, String key) {
if (this.cacheManager.cacheExists(fqn)) {
Cache cache = this.cacheManager.getCache(fqn);
cache.remove(key);
}
}
@Override
public void remove(String fqn) {
this.cacheManager.removeCache(fqn);
}
@Override
public void stop() {
this.cacheManager.shutdown();
}
public static void main(String[] args) {
CacheEngine cacheEngine = new EhcacheEngine();
cacheEngine.init();
cacheEngine.add("aa", "1");
cacheEngine.add("bb", "2");
cacheEngine.add("sky", "aa", "1");
cacheEngine.add("sky", "bb", "2");
System.out.println(cacheEngine.get("", "aa"));
System.out.println(cacheEngine.get(""));
}
}
|
DefaultCache的实现 |
|
|
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class DefaultCacheEngine implements CacheEngine {
private Map<String, Object> cache = new HashMap<String, Object>();
@Override
public void add(String key, String value) {
this.cache.put(key, value);
}
@Override
public void add(String fqn, String key, String value) {
Map map = (Map)this.cache.get(fqn);
if (map == null) {
map = new HashMap<String, String>();
}
map.put(key, value);
this.cache.put(fqn, map);
}
@Override
public Object get(String fqn, String key) {
Map map = (Map)this.cache.get(fqn);
if (map == null) {
return null;
}
return map.get(key);
}
@Override
public Object get(String fqn) {
// TODO Auto-generated method stub
return this.cache.get(fqn);
}
@Override
public Collection getValues(String fqn) {
// TODO Auto-generated method stub
Map map = (Map)this.cache.get(fqn);
if (map == null) {
return new ArrayList<String>();
}
return map.values();
}
@Override
public void init() {
// TODO Auto-generated method stub
this.cache = new HashMap<String, Object>();
}
@Override
public void remove(String fqn, String key) {
// TODO Auto-generated method stub
Map map = (Map)this.cache.get(fqn);
if (map != null) {
map.remove(key);
}
}
@Override
public void remove(String fqn) {
this.cache.remove(fqn);
}
@Override
public void stop() {
}
public static void main(String[] args) {
CacheEngine cacheEngine = new DefaultCacheEngine();
cacheEngine.init();
cacheEngine.add("aa", "1");
cacheEngine.add("sky", "aa","1");
cacheEngine.add("sky", "bb", "2");
cacheEngine.add("bb", "2");
System.out.println(cacheEngine.get("aa"));
System.out.println(cacheEngine.get("sky"));
System.out.println(cacheEngine.getValues("sky"));
cacheEngine.remove("sky");
System.out.println(cacheEngine.getValues("sky"));
}
}
|
axis2生成的简单服务例子 |
|
|
public interface IMessageService {
public String getMessage();
public void sendUserInfo(User user);
}
public class MessageServiceImpl implements IMessageService {
public String getMessage() {
return "你好";
}
@Override
public void sendUserInfo(User user) {
if (null != user) {
System.out.println("提交的用户信息" + user);
}
}
}
application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="messageService"
class="com.zl.service.impl.MessageServiceImpl" />
</beans>
services.xml定义:
<service name="MessageService" scope="application" >
<description>
message service
</description>
<parameter name="ServiceClass">com.zl.service.IMessageService</parameter>
<parameter name="ServiceObjectSupplier"> org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
<parameter name="SpringBeanName">messageService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
</service>
客户端代码:
@Test
public void testUser() throws AxisFault {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8089/services/MessageService?wsdl");
options.setTo(targetEPR);
QName name = new QName("http://service.zl.com", "getMessage");
QName name1 = new QName("http://service.zl.com", "sendUserInfo");
User user = new User("啊啊",27);
OMElement element = serviceClient.invokeBlocking(name, new Object[]{});
System.out.println(element.getFirstElement().getText());
serviceClient.invokeRobust(name1, new Object[]{user});
}
|
利用JSON对象 |
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script type="text/javascript">
if (typeof JSON == 'undefined')
{
document.write("<script type=\"text/javascript\" src=\"link/JSON2.js\"> <\/script>");
}
</script>
</HEAD>
<BODY>
<script type="text/javascript">
var myData = {
'a':'1',
'b':'2'
};
var jsonStr = JSON.stringify(myData);
alert(typeof jsonStr);
var jsonObj = JSON.parse(jsonStr);
alert(typeof jsonObj);
alert(jsonObj['a']);
</script>
</BODY>
</HTML>
|
xml字符串生成方式:dom4j,Stringbuild |
|
|
package com.xml;
import java.security.KeyStore.Builder;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class XmlDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("------------------dom4j---------------------");
long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
dom4jXmlStr();
}
long end = System.currentTimeMillis();
System.out.println("花费的时间(s)" + (end - start) / 1000);
System.out.println("------------------stringbuild---------------------");
long start1 = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
builderXmlStr();
}
long end1 = System.currentTimeMillis();
System.out.println("花费的时间(s)" + (end1 - start1) / 1000);
}
public static String dom4jXmlStr() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("cameras");
Element cameraEle = null;
Element ele = null;
for (int i = 0; i < 10000; i++) {
cameraEle = root.addElement("camera");
ele = cameraEle.addElement("objectId");
ele.setText(String.valueOf(i));
ele = cameraEle.addElement("status");
ele.setText("0");
}
return document.asXML();
}
public static String builderXmlStr() {
StringBuilder xmlBuild = new StringBuilder();
xmlBuild.append("<?xml version=\"1.0\" version=\"utf-8\" ?>");
xmlBuild.append("<cameras>");
for (int i = 0; i < 10000; i++) {
xmlBuild.append("<camera>")
.append("<objectId>").append(String.valueOf(i)).append("</objectId>")
.append("<status>").append("0").append("</status>")
.append("</cameras>");
}
xmlBuild.append("</cameras>");
return xmlBuild.toString();
}
}
|