使用Java进行Web开发的随想

文章作者 100test 发表时间 2007:06:26 12:32:33
来源 100Test.Com百考试题网




  我自己就提出了一个解决的方法:就是把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.
} }

src="/oracle/js/wxgg_oracle.js">

相关文章


使用Java进行Web开发的随想
Java7.0中值得期待的新功能预览
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛