项目中框架小结

1.项目使用的框架有spring,hibernate,freemark,jersey,ckeditor,jfreechart

hibernate搭建底层数据结构
应用中的结构有:
一对多,多对一 由一方来维护数据的插入,和更新 配置文件中的关键字 inverse='true'。
多对多,可以由一方维护,也可以由双方共同维护。

jersey框架应用时
建立实体bean和输出客户端的页面bean的对应关系。
Vo Bean可以有具体的Bean对象。但是Bean对象之间不能有应用关系

jersey 分客户端和服务器端框架
客户端访问服务器端时:代码如下
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new LoggingFilter());
WebResource resource = client.resource(uri);//uri是访问资源的路径
MultivaluedMap queryParams=new MultivaluedMapImpl();
queryParams.add("viewAreaId",viewAreaId);
queryParams.add("port", port);
String result="";
try{
    result=resource.path("/rest/mobile").path("/startSynData.json").queryParams(queryParams).accept(MediaType.APPLICATION_JSON).get(String.class);
    //该资源向服务器端发送一个get请求,告诉服务器端返回json格式的数据
}catch(Exception ex){
    logger.error("请求同步数据异常",ex);
    throw new SyncDataException("请求同步异常");
}
return result;

当访问服务器端获得了json串之后,通过json-lib.jar这个框架转换成系统的对象
实现方法是在要封装的Vo bean对象里有一个静态方法,该方法对字符串解析,当然可以对它里面的对象同时解析。具体就要通过
Map map=PropertyUtils.describe(dynaBean);该方法获得一个map,然后将map中当前vo对象的所要的值取出来,如果是它里面
的对象,就由它里面对象中的静态方法来取。

服务器端是和spring结合起来使用的:
@Path("mobile") 放在类范围上就是总的访问路径
@Scope("request") 当前的对象的范围是reuqest周期内
@InjectParam("viewAreaService") 注入spring配置文件中配置的bean对象
@Context
UriInfo uriInfo; 表示从上下文中获得资源信息
@Context
HttpServletRequest request; 表示从上下文中获取请求对象
@Path("/getCurrentViewAreaInfo.{format}") 放在方法上就是该方法的访问路径,当然绝对路径应该加上类的访问路径 ,{format}可以是任何串结尾
@GET 接受GET请求
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 处理的是json和xml格式
在服务器端中的方法会代用业务对象处理业务,处理完成后返回客户端指定格式的字符串。这就是通过服务器端的实体Bean转换成Vo对象返回。

freemark是一个通过定制模板生成页面的框架。界面通过ckeditor网页编辑器编辑,然后后台通过freemark生成,是很好的搭配
ckeditor个性化的定制可以通过config.js来配置
最主要的是能够添加自己写的样式到编辑器中:
CKEDITOR.stylesSet.add('my_custom_style', [
    { name: 'My P', element: 'p', styles: {margin:'0px 4px','padding':'0px 2px 2px 2px','line-height':'22px','text-align':'justify','text-indent':'2px'} }
]);
var editor = CKEDITOR.replace('editor1',{stylesSet:'my_custom_style'});
先定义自己的样式然后将样式添加到编辑器中。
当然随着新一代的浏览器对html5的支持,也可以在ckeditor中集成video编辑器的功能。具体做法如下:
config.js中加入:
CKEDITOR.config.extraPlugins='video';
config.toolbar_MyToolbar=['Video'];
然后在ckeditor/plugins/文件夹下加入video插件。该插件可以在ckeditor的插件中找。如果你当前的ckeditor版本太低需要先升级

jfreechart
在应用了该框架提供的例子后,会在页面出现乱码的情况。
具体的乱码有:x轴标题,x轴的值 categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,15));categoryAxis.setTickLabelFont(new Font("宋体",Font.BOLD,15));
y轴标题,y轴的值 axis.setLabelFont(new Font("宋体",Font.BOLD,15));axis.setTickLabelFont(new Font("宋体",Font.BOLD,15));
图例标题legend.setItemFont(new Font("宋体", Font.BOLD, 15));
表的标题chart.getTitle().setFont(new Font("宋体", Font.BOLD,15));
渲染器renderer.setBaseItemLabelFont(new Font("宋体", Font.PLAIN, 15)); renderer.setSeriesItemLabelFont(0, new Font("宋体", Font.PLAIN, 15));  
该框架先要在服务器生成图片,然后通过文件名称取访问
JFreeChart jfreechart=createChart(createDataset(vos));
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
       
String filename = null;
PrintWriter pw = new PrintWriter(out);
try {
    filename = ServletUtilities.saveChartAsPNG(jfreechart, 700,450,info, session);
    ChartUtilities.writeImageMap(pw, filename, info, false);
} catch (IOException e) {
    e.printStackTrace();
}
pw.flush();
String graphurl = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;  
界面调用<img src="<%=graphurl%>"  border="0" usemap="#<%=filename%>"/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值