国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用Java進行Web開發的隨想

2019-11-18 14:47:00
字體:
來源:轉載
供稿:網友

  我朋友經常引用我的一句話就是:你的java對我的javascript是侵入的....,仿佛她比我還OO來著。

  我自己就提出了一個解決的方法:就是把Java對象寫成JS對象,這樣Web設計人員只要關注JS對象,用JS對象來渲染整個Web頁面,這樣我就不會和他的領域沖突了。

  簡單來說,我們平常的WEB框架都是號稱MVC的,這樣它們就把V這個事情壓在了JAVA程序員的身上,可憐我的審美觀啊~所以我們應該把V繼續往下推,推給對JAVA什么都不懂,但是卻有非常豐富的WEB設計人員的身上??偛荒茏寗e人去學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也一起給出吧,雖然不是要害

  代碼:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌南县| 海兴县| 肇庆市| 疏附县| 寿宁县| 响水县| 丰都县| 屏南县| 汾西县| 石门县| 文登市| 合山市| 宝山区| 苏尼特右旗| 英德市| 昌宁县| 江北区| 民乐县| 道孚县| 城口县| 彰武县| 章丘市| 徐州市| 宜昌市| 新民市| 秦安县| 镶黄旗| 眉山市| 乌海市| 祁东县| 体育| 定南县| 凌云县| 南康市| 洞口县| 平顺县| 忻城县| 尼玛县| 左云县| 弥渡县| 凤翔县|