首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

JAVA进阶--使用Java进行Web开发的随想

http://www.oklinux.cn  2008-01-20  来源: ccidnet baocl  会员收藏  游客收藏  【 】 

我朋友经常引用我的一句话就是:你的Java对我的Javascript是侵入的....,仿佛她比我还OO来着。

  我自己就提出了一个解决的方法:就是把Java对象写成JS对象,这样Web设计人员只要关注JS对象,用JS对象来渲染整个Web页面,这样我就不会和他的领域冲突了。

  简单来说,我们平常的WEB框架都是号称MVC的,这样它们就把V这个事情压在了JAVA程序员的身上,可怜我的审美观啊~所以我们应该把V继续往下推,推给对JAVA什么都不懂,但是却有非常丰富的WEB设计人员的身上。总不能让别人去学JAVA呀,那就只好把JAVA对象写成JS对象,这样WEB设计人员就可以轻松调用JS了。

  大体实现过程是这样的:

  1、双方先讨论项目的需求,然后确定下个个页面需要显示什么内容,怎么显示不管。讨论完后便确定了JS对象和数据库的大体结构。

  2、各自写各自的东西...

  3、双方写好后把WEB页面通过JS对象和Java连接起来,调试,完工。

  具体要害代码:

  J2J.java的代码,功能是获取scope范围内,名称为source的java对象,然后把这个java对象写成名称为distName类别为dist的JS对象。

  代码:

/*
* J2J.java
*
* Created on 2006年10月2日, 下午7:16
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package net.vlinux.tag.j2j;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.lang.reflect.*;
import java.util.*;

/**
*
* @author vlinux
*/
public class NewObject extends TagSupport {
 private String dist;
 private String distName;
 private String scope;
 private String source;

 private List<Method> getGetMethods( Object aObject ) {
  Method[] array = aObject.getClass().getMethods();
  List<Method> list = new ArrayList<Method>();
  for( int i=0;i<array.length;i ){
   String methodName = array[i].getName();
   if( methodName.matches("get.*") )
    list.add(array[i]);
  }
  return list;
}

private String getFieldName( Method aMethod){
 String methodName = aMethod.getName();
 String subName = methodName.substring(3,methodName.length());
 return subName.toLowerCase();
}

private Object getSourceObject(String scope, String source){
 if( scope.equals("request") ){
  return pageContext.getRequest().getAttribute(source);
 }else if( scope.equals("session") ){
  return pageContext.getSession().getAttribute(source);
 }else if( scope.equals("page") ){
  return pageContext.getAttribute(source);
 }else{
  System.out.println("xxx");
  return null;
 }
}

public int doStartTag(){
 JspWriter out = pageContext.getOut();
 Object sourceObject = getSourceObject(getScope(),getSource());
 List list = getGetMethods( sourceObject );
 try{
  out.println( "<script>" );
  out.println( "\tvar " getDistName() " = new " getDist() "();");
  for( int i=0;i<list.size();i ){
   try{
    String fieldName = getFieldName((Method)list.get(i));
    String value = ((Method)list.get(i)).invoke( getSourceObject(getScope(),getSource())).toString();
    out.println( "\t" getDistName() "." fieldName " = \"" value "\"");
   }catch(Exception e){
    //
   }
  }
  out.println( "</script>" );
 }catch( java.io.IOException ioe){
  //
 }
 return (EVAL_BODY_INCLUDE);
}
public int doEndTag(){
 return (EVAL_PAGE);
}

public String getDist() {
 return dist;
}

public void setDist(String dist) {
 this.dist = dist;
}

public String getDistName() {
 return distName;
}

public void setDistName(String distName) {
 this.distName = distName;
}

public String getScope() {
 return scope;
}

public void setScope(String scope) {
 this.scope = scope;
}

public String getSource() {
 return source;
}

public void setSource(String source) {
 this.source = source;
} }

  标签的tld也一起给出吧,虽然不是要害

  代码:

<?xml version="1.0" encoding="UTF-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>J2J</shortname> <uri>/J2J</uri> <tag> <name>newObject</name> <tagclass>net.vlinux.tag.j2j.NewObject</tagclass> <bodycontent>JSP</bodycontent> <info></info> <attribute> <name>distName</name> <required>true</required> </attribute> <attribute> <name>dist</name> <required>true</required> </attribute> <attribute> <name>scope</name> <required>true</required> </attribute> <attribute> <name>source</name> <required>true</required> </attribute> </tag> </taglib>
共2页: 上一页 1 [2] 下一页

上一篇:一个基于Java Socket实现文件传输示例   下一篇:高手为你解读J2EE开发过程中的异常处理


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·一个基于Java Socket实现文件传输示例
·JAVA高级--Java中异常机制的深入研究
·JAVA基础:一个struts hibernate入门实例
·Java语言常用VI高级命令集锦
·JAVA进阶--对象的序列化和反序列化实践
·Java语言对象池技术的原理及其实现解析
·Java进阶--减少对象的创建提高java性能
·Ajax技术:构建动态的Java应用程序分析
·JAVA进阶--根据所涉及对象生成XML文档
·spring 2.0自定义xml 标记 (一 相关类)
·Java基础:编写对GC友好,又不泄漏的代码
·对Map技巧的一点总结:获得Map中的数据
·Java进阶-编写跨平台Java程序注意事项
·学习Java用于异常处理的terminate()函数
·spring 2.0自定义xml 标记 (二 如何实现)
·使用isInstanceOf()测试程序对象的类型
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java入门:状态对象--数据库的替代者
·Java语言怎样调用外部应用程序
·Java语言深入--关于Java语言的内存泄漏
·JSP/Servlet/JSF:Servlet/JSP配置详解
·进阶-怎样使用AJAX进行WEB应用程序开发
·基础:J2ME程序开发之新手入门九大要点
·Java入门--Java语言接口与继承的本质
·JAVA进阶--如何提升JSP应用程序的效率
·对Java中四种XML解析技术之不完全测试
·编写高级 JScript应用代码
·JSP/Servlet/JSF--对标签库的深入研究
·Java入门--关于字符串分割的两种方法
  阅读排行
·使用AJAX技术实现网页无闪自动局部刷新
·快速教您Apache Tomcat SSL的配置
·Java语言深入--java调用C/C 的过程
·用JSP JavaScript打造二级级联下拉菜单
·JAVA进阶--线程运行栈信息的获取讲解
·J2SE综合--JAVA实现把汉字转化成拼音
·使用WEBWORK实现文件上传方法实例详解
·一个非常有趣的使用spring框架AOP例子
·关于java中相对路径,绝对路径问题总结
·高级:lucene全文检索应用示例及代码简
·详细讲解Struts构架中action的跳转大全
·Hibernate配置文件中的映射元素详解
·在Weblogic上配置JMS服务的方法
·对Java中四种XML解析技术之不完全测试
·数据库相关:小结Hibernate的查询方式
网摘收藏: