??xml version="1.0" encoding="utf-8" standalone="yes"?>超碰国产在线,国产三级精品视频,精品福利avhttp://www.aygfsteel.com/peiliangye/吞噬黑暗zh-cnSat, 21 Jun 2025 18:56:32 GMTSat, 21 Jun 2025 18:56:32 GMT60jQuery调用JSONӞnet.sf.json.JSONException: There is a cycle in the hierarchy http://www.aygfsteel.com/peiliangye/articles/372062.htmlplyplyFri, 16 Mar 2012 10:38:00 GMThttp://www.aygfsteel.com/peiliangye/articles/372062.htmlhttp://www.aygfsteel.com/peiliangye/comments/372062.htmlhttp://www.aygfsteel.com/peiliangye/articles/372062.html#Feedback10http://www.aygfsteel.com/peiliangye/comments/commentRss/372062.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/372062.html

遇到了一些问?如hibernate延迟加蝲错误Q这都是老掉牙的问题了,一看就知道加个lazy=flaseO(jin)K了。想不到快要完成了又遇到了新的问题,JSONd@环,实在让h郁闷。异常如下:(x)


net.sf.json.JSONException: There is a cycle in the hierarchy!
        at net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.
handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)
        at net.sf.json.JSONObject._fromBean(JSONObject.java:674)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:181)
        at net.sf.json.JSONArray._processValue(JSONArray.java:2381)
        at net.sf.json.JSONArray.processValue(JSONArray.java:2412)
        Truncated. see log file for complete stacktrace
>


仔细查了一下发现是hibernated键关联的错,后来想下json源代码下来看Q发现大费周章都没搞到json源码Q还是老办法反~译瞅瞅Q发现JSONArrayҎ(gu)判断取得的不同类型调用相应的Ҏ(gu)Q?br />

if (object instanceof Collection)
    return _fromCollection((Collection)object, jsonConfig);

而我从hibernate那得到的是listQ所以去调用了_fromCollectionҎ(gu)Q而里面的Ҏ(gu)发现一个问题:(x)该方法会(x)不断的拆开实体属性,直到没有为止Q而我的ContactGroup里有两个属性用于自w关?br />

private Set contactGroups = new HashSet(0);
private Set contactGroupPersons = new HashSet(0);


也就是说d键自w关联的是个d@环,那怎么才能不让他出现这U情况呢Q应该有个配|的参数后者终止@环的地方吧,查看?br />玎ͼjsonConfigQ呵呵,config应该是配|参数吧Q参看JsonConfig看见巨多的属性,有点晕PropertyFilter
Q不提了Q看了老半天,发现了一个属性PropertyFilterQPropertyFilter 是一个interfaceQ代码如下:(x)


public interface PropertyFilter
{


public abstract boolean apply(Object obj, String s, Object obj1);
}


也就是说我可以通过q个Ҏ(gu)qo(h)掉List里的相应属性,只要让它q回true可qo(h)掉,……Q有Ҏ(gu)……我们重写一下这个方法:(x)


JsonConfig cfg = new JsonConfig();
    cfg.setJsonPropertyFilter(new PropertyFilter()
    {
         public boolean apply(Object source, String name, Object value) {
           if(name.equals("contactGroups")||name.equals("contactGroupPersons")) {
             return true;
           } else {
             return false;
          }
        }
       });

hibernate产生的实体bean中的contactGroups和contactGroupPersonsqo(h)掉就O(jin)K了!

然后调用JSONArray.fromObject(mychildren,cfg); mychildren是hibernateq回的list?/p>

 

 1List<ShoppingCart> listCarts = sCartServiceImpl
 2                        .ShoppingCartTable(shoppingCart);
 3                // 先过滤对set集合的拆?/span>
 4                JsonConfig config = new JsonConfig();
 5                config.setJsonPropertyFilter(new PropertyFilter() {
 6                    @Override
 7                    public boolean apply(Object arg0, String arg1, Object arg2) {
 8                        if (arg1.equals("shoppingCarts")) {
 9                            return true;
10                        }
 else {
11                            return false;
12                        }

13                    }

14                }
);
15                // 数据{换成Json数据
16                JSONArray jsonObject = JSONArray.fromObject(listCarts, config);
17                System.out.println(jsonObject.toString());
18

搞了一下午Q参考网l的资料Q解决问题了Q?/p>

ply 2012-03-16 18:38 发表评论
]]>
MyEclipse快捷键大?http://www.aygfsteel.com/peiliangye/articles/367199.htmlplyplyMon, 26 Dec 2011 09:17:00 GMThttp://www.aygfsteel.com/peiliangye/articles/367199.htmlhttp://www.aygfsteel.com/peiliangye/comments/367199.htmlhttp://www.aygfsteel.com/peiliangye/articles/367199.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/367199.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/367199.html

-------------------------------------
MyEclipse
快捷?(CTRL)
-------------------------------------
Ctrl+1 快速修?br />Ctrl+D:
删除当前?
Ctrl+Q  定位到最后编辑的地方
Ctrl+L  定位在某?nbsp;
Ctrl+O  快速显C?OutLine

Ctrl+T  快速显C当前类的承结?
Ctrl+W  关闭当前Editer
Ctrl+K  快速定位到下一?
Ctrl+E
快速显C当前Editer的下拉列?br />Ctrl+J 
正向增量查找(按下Ctrl+J?你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显C没有找C,)   

Ctrl+Z q回C改前的状?
Ctrl+Y 与上面的操作相反
Ctrl+/  注释当前?再按则取消注?

Ctrl+D删除当前行?br />Ctrl+Q跛_最后一ơ的~辑?br />Ctrl+M切换H口的大?
Ctrl+I格式化激zȝ元素Format
Active
Elements?br />Ctrl+F6切换C一个Editor
Ctrl+F7切换C一个Perspective
Ctrl+F8切换C一个View
------------------------------------------
MyEclipse
快捷?(CTRL+SHIFT)
------------------------------------------
Ctrl+Shift+E
昄理当前打开的所有的View的管理器(可以选择关闭,Ȁzȝ操作)
Ctrl+Shift+/ 自动注释代码

Ctrl+Shift+\自动取消已经注释的代?
Ctrl+Shift+O 自动引导cd
Ctrl+Shift+J
反向增量查找(和上条相?只不q是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 
把当前选中的文本全部变为小?
Ctrl+Shift+Y  把当前选中的文本全部变为小?
Ctrl+Shift+F 
格式化当前代?br />Ctrl+Shift+M(先把光标攑֜需导入包的cd? 作用是加Import语句
Ctrl+Shift+P
定位到对于的匚wW?譬如{}) (从前面定位后面时,光标要在匚wW里?后面到前?则反?
Ctrl+Shift+F格式化文件Format
Document?br />Ctrl+Shift+O作用是缺的Import语句被加入,多余的Import语句被删除?

Ctrl+Shift+S保存所有未保存的文件?br />Ctrl+Shift+/ 在代码窗口中是这U?*~*/注释Q在JSP文gH口中是
<!--~-->?
Shift+Ctrl+Enter
在当前行插入I(原理同上?
-----------------------------------------
MyEclipse
快捷?(ALT)
-----------------------------------------
Alt+/ 代码助手完成一些代码的插入
Q自动显C提CZ?br />Alt+↓  当前行和下面一行交互位|?特别实用,可以省去先剪?再粘贴了)
Alt+↑  当前行和上面一行交互位|?同上)

Alt+←  前一个编辑的面
Alt+→  下一个编辑的面(当然是针对上面那条来说了)
Alt+Enter
昄当前选择资源(工程,or 文g or文g)的属?


MyEclipse 快捷?(ALT+CTRL)


Alt+CTRL+↓ 复制当前行到下一?复制增加)
Alt+CTRL+↑
复制当前行到上一?复制增加)
-------------------------------------------
MyEclipse
快捷?(ALT+SHIFT)
-------------------------------------------
Alt+Shift+R
重命?
Alt+Shift+M 抽取Ҏ(gu)
Alt+Shift+C 修改函数l构(比较实用,有N个函数调用了q个Ҏ(gu),修改一ơ搞?

Alt+Shift+L 抽取本地变量
Alt+Shift+F 把Class中的local变量变ؓ(f)field变量
Alt+Shift+I
合ƈ变量
Alt+Shift+V Ud函数和变?br />Alt+Shift+Z 重构的后(zhn)药(Undo) Shift+Enter
在当前行的下一行插入空?q时鼠标可以在当前行的Q一位置,不一定是最?
Alt+Shift+O(或点dh中的Toggle Mark
Occurrences按钮) 当点?yn)L个标记时可本页面中其他地方的此标记黄色凸显Qƈ且窗口的双框会(x)出现白色的方块,点击此方块会(x)跛_此标记处?

下面的快捷键是重构里面常用的,本hp己喜Ƣ且常用的整理一??一般重构的快捷键都是Alt+Shift开头的?


--------------------------------------------
MyEclipse 快捷?6)
--------------------------------------------
F2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标Ud时Tooltipq会(x)昄即Show
Tooltip Description?
F3跛_声明或定义的地方?
F5单步调试q入函数内部?

F6单步调试不进入函数内部,如果装了金山词霸2006则要?#8220;取词开?#8221;的快捷键Ҏ(gu)其他的?
F7由函数内部返回到调用处?

F8一直执行到下一个断炏V?





ply 2011-12-26 17:17 发表评论
]]>
length、length()、size的区?..http://www.aygfsteel.com/peiliangye/articles/365370.htmlplyplyFri, 02 Dec 2011 05:37:00 GMThttp://www.aygfsteel.com/peiliangye/articles/365370.htmlhttp://www.aygfsteel.com/peiliangye/comments/365370.htmlhttp://www.aygfsteel.com/peiliangye/articles/365370.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/365370.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/365370.htmllength()是字W串获取长度的方法,
size是list的个?img src ="http://www.aygfsteel.com/peiliangye/aggbug/365370.html" width = "1" height = "1" />

ply 2011-12-02 13:37 发表评论
]]>
理解多态AND理解父类引用指向子类对象http://www.aygfsteel.com/peiliangye/articles/365335.htmlplyplyThu, 01 Dec 2011 14:24:00 GMThttp://www.aygfsteel.com/peiliangye/articles/365335.htmlhttp://www.aygfsteel.com/peiliangye/comments/365335.htmlhttp://www.aygfsteel.com/peiliangye/articles/365335.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/365335.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/365335.html从对象的内存角度来理解试?

假设现在有一个父cFather,它里面的变量需要占?M内存.有一个它的子cSon,它里面的变量需要占?.5M内存.

现在通过代码来看看内存的分配情况:

Father f = new Father();//pȝ分?M内存.

Son s = new Son();//pȝ分?.5M内存.


因ؓ(f)子类中有一个隐藏的引用super?x)指向父cd?所以在实例化子cM前会(x)先实例化一个父c?也就是说?x)先执行父类的构造函?

׃s中包含了父类的实?所以s可以调用父类的方?


Son s1 = s;//s1指向?.5M的内?(可以理解为就是:(x)子类引用指向子类对象)


Father f1 = (Father)s;//q时f1?x)指向?.5M内存中的1M内存,x?f1只是指向了s中实例的父类实例对象,所以f1只能调用父类的方?存储?M内存?,而不能调用子cȝҎ(gu)(存储?.5M内存?.


Son s2 = (Son)f;//q句代码q行时会(x)报ClassCastException.因ؓ(f)f中只?M内存,而子cȝ引用都必要?.5M的内?所以无法{?


Son s3 = (Son)f1;//q句可以通过q行,q时s3指向?.5M的内?׃f1是由s转换q来?所以它是有1.5M的内存的,只是它指向的只有1M内存.

 


CZQ?br />

class Father{

void print(){};

}


class Son extends Father{

void print(){System.out.println("子类中!");}

void show(){System.out.println("show 中!");}

}


class Demo{

public static void main(String args[]){

Father obj=new Son();

obj.print();

obj.show();  //q个调用?x)报错?br />

}

}


1 .如果你想实现多?那么必须有三个条?父类引用,子类对象,Ҏ(gu)覆盖

你这里如果FathorcL一个show()Ҏ(gu),那么形成Ҏ(gu)覆盖,那么此时可以这么写:obj.show(),此刻形成了多?

2. 没有Ҏ(gu)覆盖,那你q里只能解释为父cd用去讉K一个子cȝҎ(gu),当然,父类引用没有q么大范围的权限,当然?x)报?

PS:多态实际上是一U机?在编译时??x)生成一张虚拟表,来记录所有覆盖的Ҏ(gu),没有被覆盖的Ҏ(gu)是不?x)记录到q张表的.

若一个父cd用调用了没有覆盖的子cL?那么是不W合该表?那么~译时刻׃(x)报错.

在执行程序的时?虚拟Z(x)去这张虚拟表中找覆盖的方?比如引用中实际上存的是一个子cd象引?那么׃(x)L子类中的相应的覆盖的Ҏ(gu)来执?br />

定义一个父cȝ型的引用指向一个子cȝ对象既可以用子cd大的功能Q又可以抽取父类的共性?/p>

所以,父类cd的引用可以调用父cM定义的所有属性和Ҏ(gu)Q而对于子cM定义而父cM没有的方法,它是无可奈何的;

同时Q父cM的一个方法只有在在父cM定义而在子类中没有重写的情况下,才可以被父类cd的引用调用;

对多态的理解Q多态体现在l承中,所以需要有l承关系Q然后子c要重写父类Ҏ(gu)Q最后父cL向子c(父类本nh一些方法,q些Ҏ(gu)被子c重写了Q但调用q些Ҏ(gu)Ӟ?x)自动调子类重写的那些)?/p>

多态具体表现在重写和重载,多态就是类的多U表现方式,比如同名不同参,子类重写父类?br />

看下面这D늨序:(x)

class Father{

    public void func1(){

        func2();

    }


    //q是父类中的func2()Ҏ(gu)Q因Z面的子类中重写了该方?/p>

    //所以在父类cd的引用中调用Ӟq个Ҏ(gu)不再有?/p>

    //取而代之的是将调用子类中重写的func2()Ҏ(gu)

    public void func2(){

        System.out.println("AAA");

    }

}

 

class Child extends Father{

    //func1(int i)是对func1()Ҏ(gu)的一个重?/p>

    //׃在父cM没有定义q个Ҏ(gu)Q所以它不能被父cȝ型的引用调用

    //所以在下面的mainҎ(gu)中child.func1(68)是不对的

    public void func1(int i){

        System.out.println("BBB");

    }


    //func2()重写了父cFather中的func2()Ҏ(gu)

    //如果父类cd的引用中调用了func2()Ҏ(gu)Q那么必然是子类中重写的q个Ҏ(gu)

    public void func2(){

        System.out.println("CCC");

    }

}


public class PolymorphismTest {

    public static void main(String[] args) {

        Father child = new Child();

        child.func1();//打印l果会(x)是什么?  

    }

}


  
上面的程序是个很典型的多态的例子。子cChildl承了父cFatherQƈ重蝲了父cȝfunc1()Ҏ(gu)Q重写了父类的func2()Ҏ(gu)。重载后的func1(int
i)和func1()不再是同一个方法,׃父类中没有func1(int i)Q那么,父类cd的引用child׃能调用func1(int
i)Ҏ(gu)。而子c重写了func2()Ҏ(gu)Q那么父cȝ型的引用child在调用该Ҏ(gu)时将?x)调用子cM重写的func2()?/p>

    那么该程序将?x)打印出什么样的结果呢Q?/p>

    很显Ӟ应该?#8220;CCC”?/p>





变量是不存在重写覆盖的!

public class A { int a = 1; }

public class B extends A { int a = 2Q?}


试c里调用了这个方法void compare(){

if(super.a == this.a)

System.out.println("not overrided");

else

System.out.println("overrided");}

控制台出来的是overrided

 cM的属性是没有多态性的Q即你在引用上面使用属性时Q系l只?x)去扑ּ用的静态类型中的那个属性,而与它的实际cd无关?/p>

静态方法也是没有多态性的?/p>

ply 2011-12-01 22:24 发表评论
]]>
struts2的类型{?/title><link>http://www.aygfsteel.com/peiliangye/articles/358699.html</link><dc:creator>ply</dc:creator><author>ply</author><pubDate>Thu, 15 Sep 2011 06:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/peiliangye/articles/358699.html</guid><wfw:comment>http://www.aygfsteel.com/peiliangye/comments/358699.html</wfw:comment><comments>http://www.aygfsteel.com/peiliangye/articles/358699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/peiliangye/comments/commentRss/358699.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/peiliangye/services/trackbacks/358699.html</trackback:ping><description><![CDATA[<p>web应用cd的{换分ZU情况:(x)</p> <p>1.从客房端的字W串到自定义cd的{换?br /></p> <p>2.面输出时从自定义类型到字符串的转换?/p> <p>在struts2中分两种转换Q一U是局部{换,另一U是全局cd转换。具体{换的实施需要一个{换类和一个自定义cR我们先来看局部类型{换?br /></p> <p style="font-size: 18pt"><strong>局部类型{?/strong> <br /></p> <p>对于int{基本类型,struts2?x)自动完成类型{换,像ageq龄Q在输入面是String型的Q到Action后会(x)自动转换成int型。而如果是转换成对象类型的话,需要自定义cd转换。这样就需要一个自定义cR要定义一个{换类Q需要?span style="color: #0000ff"><strong>ognl.DefaultTypeConverte</strong>r</span>q个c?Q这是个cd转换的类。代码如下:(x)<br /></p> <div id="wmqeeuq" class="cnblogs_code"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <p><span style="color: #008080"> 1</span> <span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PointConverter </span><span style="color: #0000ff">extends</span><span style="color: #000000"> DefaultTypeConverter{</span></p><span style="color: #000000"> </span><span style="color: #008080">2</span> <span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Ojbect convertValue(Map context,Object value,Class tyType){<span style="color: #339966">//重写Ҏ(gu)</span><br /></span><span style="color: #008080"> 3</span> <span style="color: #000000">        </span><span style="color: #0000ff">if</span><span style="color: #000000">(Point.</span><span style="color: #0000ff">class</span><span style="color: #000000">==</span><span style="color: #000000">toType){<br /></span><span style="color: #008080"> 4</span> <span style="color: #000000">            Point point </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Point();<br /></span><span style="color: #008080"> 5</span> <span style="color: #000000">            String[] str </span><span style="color: #000000">=</span><span style="color: #000000"> (String[])value;</span><span style="color: #008000">//</span><span style="color: #008000">String转换成类的代码处?/span><span style="color: #008000"><br /></span><span style="color: #008080"> 6</span> <span style="color: #000000">            </span><span style="color: #0000ff">return</span><span style="color: #000000"> point;<br /></span><span style="color: #008080"> 7</span> <span style="color: #000000">         }<br /></span><span style="color: #008080"> 8</span> <span style="color: #000000">         </span><span style="color: #0000ff">if</span><span style="color: #000000">(String.</span><span style="color: #0000ff">class</span><span style="color: #000000">==</span><span style="color: #000000">toType){</span><span style="color: #008000">//</span><span style="color: #008000">说明q转换成String</span><span style="color: #008000"><br /></span><span style="color: #008080"> 9</span> <span style="color: #000000">             Point point </span><span style="color: #000000">=</span><span style="color: #000000"> (Point)value;</span><span style="color: #008000">//</span><span style="color: #008000">类转成String的代码处?/span><span style="color: #008000"><br /></span><span style="color: #008080">10</span> <span style="color: #000000">             </span><span style="color: #0000ff">return</span><span style="color: #000000"> String型的一个变?<br /></span><span style="color: #008080">11</span> <span style="color: #000000">         }<br /></span><span style="color: #008080">12</span> <span style="color: #000000">         </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /></span><span style="color: #008080">13</span> <span style="color: #000000">    }<br /></span><span style="color: #008080">14</span> <span style="color: #000000">}</span></div> <p><span style="color: red">Ҏ(gu)Ҏ(gu)说明</span>Q?、Map context  ——应用上正?/p> <p>                    2、Object value ——是要q行cd转换的倹{如果是从客L(fng)到自定义的类Q那么value是个字符丌Ӏ注意:(x)它是一个字W串的数l。因为:(x)在表单中可以有多个文本域Q而所有文本域可以是同一个名字,q时是考虑通用性而作为数l处理的。如果只有一个文本域Q则数组只有一个元素,下标?。注Qjsp的servlet中接收多个相同名字的输入域用request.getParameterValues()Ҏ(gu)?/p> <p>                    3、class toType ——来指定向?一U类型{换,x向类转换q是向客L(fng)转换?/p> <p>                    4、Point是一个类Q即是我们的自定义类。不是系l内|的cd<span style="display: none" id="Code_Open_Text_130813"><br /></span></p> <div id="wmqeeuq" class="cnblogs_code"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080"> 1</span> <span style="color: #0000ff">if</span><span style="color: #000000">(c?</span><span style="color: #0000ff">class</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> toType){</span><span style="color: #008000">//</span><span style="color: #008000">说明由客L(fng)向类转换</span><span style="color: #008000"><br /></span><span style="color: #008080"> 2</span> <span style="color: #000000">    Point point </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Point();</span><span style="color: #008000">//</span><span style="color: #008000">向哪个类转换Q就实例化这个类</span><span style="color: #008000"><br /></span><span style="color: #008080"> 3</span> <span style="color: #000000">    String[] str </span><span style="color: #000000">=</span><span style="color: #000000"> (String[])value;</span><span style="color: #008000">//</span><span style="color: #008000">因ؓ(f)是由客户端向c{换,所以此时value是一个String[]数组</span><span style="color: #008000"><br /></span><span style="color: #008080"> 4</span> <span style="color: #000000">    String[] paramValues </span><span style="color: #000000">=</span><span style="color: #000000"> str[</span><span style="color: #000000">0</span><span style="color: #000000">].split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080"> 5</span> <span style="color: #000000">    </span><span style="color: #008000">//</span><span style="color: #008000">下面部分代码是q行转换处理</span><span style="color: #008000"><br /></span><span style="color: #008080"> 6</span> <span style="color: #000000">}<br /></span><span style="color: #008080"> 7</span> <span style="color: #0000ff">if</span><span style="color: #000000">(String.</span><span style="color: #0000ff">class</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> toType){</span><span style="color: #008000">//</span><span style="color: #008000">说明q向客L(fng)的String转换Q此时value是一个对?/span><span style="color: #008000"><br /></span><span style="color: #008080"> 8</span> <span style="color: #000000">    Point point </span><span style="color: #000000">=</span><span style="color: #000000"> (Point)value;<br /></span><span style="color: #008080"> 9</span> <span style="color: #000000">    </span><span style="color: #008000">//</span><span style="color: #008000">下面部分的代码就是进行{换处?</span><span style="color: #008000"><br /></span><span style="color: #008080">10</span> <span style="color: #000000">}</span></div> <p><span style="display: none" id="Code_Open_Text_130813"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000ff">if</span><span style="color: #000000">(c?</span><span style="color: #0000ff">class</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> toType){</span><span style="color: #008000">//</span><span style="color: #008000">说明由客L(fng)向类转换</span><span style="color: #008000"><br /></span><span style="color: #000000">    Point point </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Point();</span><span style="color: #008000">//</span><span style="color: #008000">向哪个类转换Q就实例化这个类</span><span style="color: #008000"><br /></span><span style="color: #000000">    String[] str </span><span style="color: #000000">=</span><span style="color: #000000"> (String[])value;</span><span style="color: #008000">//</span><span style="color: #008000">因ؓ(f)是由客户端向c{换,所以此时value是一个String[]数组</span><span style="color: #008000"><br /></span><span style="color: #000000">    String[] paramValues </span><span style="color: #000000">=</span><span style="color: #000000"> str[</span><span style="color: #000000">0</span><span style="color: #000000">].split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #008000">//</span><span style="color: #008000">下面部分代码是q行转换处理</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(String.</span><span style="color: #0000ff">class</span><span style="color: #000000"> </span><span style="color: #000000">==</span><span style="color: #000000"> toType){</span><span style="color: #008000">//</span><span style="color: #008000">说明q向客L(fng)的String转换Q此时value是一个对?/span><span style="color: #008000"><br /></span><span style="color: #000000">    Point point </span><span style="color: #000000">=</span><span style="color: #000000"> (Point)value;<br />    </span><span style="color: #008000">//</span><span style="color: #008000">下面部分的代码就是进行{换处?</span><span style="color: #008000"><br /></span><span style="color: #000000">}</span></span></p> <p> 自定义类、{换类、action都创建好之后Q要通告struts2转换cd什么地方,q且告诉struts2是对谁进行{换。写一个文Ӟ(x)<span style="color: #0000ff">action文g?conversion.properties</span>,此属性文件要与action在同一包下Q此文g说明Ҏ(gu)action中的属性进行{化?br /></p> <p> 文g中的内容如下Q?/p> <p style="color: #0000ff">point = 转换cd <br /></p> <p> 内容说明Q?/p> <p>1、point是Action中的一个属性,转换cL明所使用哪个转换cd此属性进行{?<br /></p> <p>2、properties文g中的注释?#8220;#”P前面?#8220;#”的行是被注释?/p> <p><strong><span style="font-size: 18pt">cd转换的流E?/span></strong> <br /></p> <p> 1、用戯行请求,Ҏ(gu)h名在struts.xml中寻找Action</p> <p> 2、在Action中,Ҏ(gu)h域中的名字去L对应的setҎ(gu)。找到后在赋g前会(x)查这个属性有没有自定义的cd转换。没有的话,按照默认q行转换Q如果某个属性已l定义好了类型{换,则会(x)L查在Action同一目录下的 <span style="color: #0000ff">action文g?conversion.properties</span> 文g?br /></p> <p> 3、从文g中找到要转换的属性及(qing)其{换类?br /></p> <p> 4、然后进入{换类中,在此cM判断转换的方向。我们是先从用户h开始的Q所以这时先q入从字W串到类的{换。返回{换后的对象。流E返回Action?/p> <p> 5、将q回的对象赋值给Action中的属性,执行Action中的execute()<br /></p> <p> 6、执行完execute()Ҏ(gu)Q根据struts.xml的配|{向页?/p> <p> 7、在jsp中显C内Ҏ(gu)Q根据页面中的属性名去调用相应的getҎ(gu)Q以便输?br /></p> <p> 8、在调用getҎ(gu)之前Q会(x)查有没有此属性的自定义类型{换。如果有Q再ơ蟩转到转换cd中?/p> <p> 9、在转换cM再次判断转换方向Q进入由cd字符串的转换Q完成{换后q回字符丌Ӏ?br /></p> <p> 10、将q回的值直接带出到要展C的面当中dC?/p><img src ="http://www.aygfsteel.com/peiliangye/aggbug/358699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/peiliangye/" target="_blank">ply</a> 2011-09-15 14:39 <a href="http://www.aygfsteel.com/peiliangye/articles/358699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat帐号的配|问题!~http://www.aygfsteel.com/peiliangye/articles/358024.htmlplyplyMon, 05 Sep 2011 12:34:00 GMThttp://www.aygfsteel.com/peiliangye/articles/358024.htmlhttp://www.aygfsteel.com/peiliangye/comments/358024.htmlhttp://www.aygfsteel.com/peiliangye/articles/358024.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/358024.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/358024.html<?xml version='1.0' encoding='utf-8'?>

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui"/>
  <role rolename="admin"/>
  <user username="admin" password="admin" roles="admin,manager-gui"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>

 

</tomcat-users>



ply 2011-09-05 20:34 发表评论
]]>
tomcat6.0 java 1.6 环境配置 免安装版和安装版http://www.aygfsteel.com/peiliangye/articles/357878.htmlplyplySat, 03 Sep 2011 05:31:00 GMThttp://www.aygfsteel.com/peiliangye/articles/357878.htmlhttp://www.aygfsteel.com/peiliangye/comments/357878.htmlhttp://www.aygfsteel.com/peiliangye/articles/357878.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/357878.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/357878.htmltomcat官网

http://tomcat.apache.org/download-60.cgi

免安装版

1.把jdk攑֜C:\Program Files目录?

1)在环境变量Path前面d

C:\Program Files\jdk1.6.0_10\bin;

2Q添加环境变量JAVA_HOME

gؓ(f) C:\Program Files\jdk1.6.0_10

2.把tomcat安装在C:\Program Files目录?

1Q添加环境变量classpath

gؓ(f).;C:\Program Files\jdk1.6.0_10\jre\lib;C:\Program Files\jdk1.6.0_10\lib\tools.jar;C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\bootstrap.jar

2)d环境变量TOMCAT_HOME

值C:\Program Files\Apache Software Foundation\Tomcat 6.0

3)d环境变量CATALINA_HOME

值C:\Program Files\Apache Software Foundation\Tomcat 6.0

4)d环境变量CATALINA_BASE

值C:\Program Files\Apache Software Foundation\Tomcat 6.0

验证Tomcat是否安装成功Q?/p>

1)启动TomcatQ?/p>

2)在Ie览器中敲入http://localhost:8080/,出来Tomcat首页Q说明Tomcat安装成功Q?/p>

3)写一个jsp面a.jsp,攑ֈTomcat的webapps/Root目录下,在Ie览器中敲入http://localhost:8080/a.jsp,

如果不报错,说明Tomcat的JDK配置正确

安装?

W一步:(x)下蝲jdk和tomcatQJDK下蝲 Tomcat下蝲
    最新的jdk?.6.10Qtomcat?.0Q徏议jdk1.4以上Qtomcat4.0以上
W二步:(x)安装和配|你的jdk和tomcatQ执行jdk和tomcat的安装程序,然后讄按照路径q行安装卛_?br />1.安装jdk以后Q需要配|一下环境变量,在我的电(sh)?>属?>高->环境变量->pȝ变量中添加以下环境变?假定你的jdk安装在C:\Program Files\JavaQ:(x)
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Q?;一定不能少Q因为它代表当前路径)
path=%JAVA_HOME%\bin 接着可以写一个简单的javaE序来测试JDK是否已安装成功:(x)
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}


上面的q段E序保存为文件名为Test.java的文件?
然后打开命o(h)提示W窗口,cdC的Test.java所在目录,然后键入下面的命?
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印句话Q你需要仔l检查一下你的配|情c(din)?

2.安装Tomcat后,在我的电(sh)?>属?>高->环境变量->pȝ变量中添加以下环境变?假定你的tomcat安装在c:\tomcatQ:(x)
CATALINA_HOMEQC:\Program Files\Apache Software Foundation\Tomcat 6.0 CATALINA_BASEQC:\Program Files\Apache Software Foundation\Tomcat 6.0
TOMCAT_HOME: C:\Program Files\Apache Software Foundation\Tomcat 6.0
然后修改环境变量中的classpathQ把tomat安装目录下的common\lib下的servlet.jarq加到classpath中去Q修改后的classpath如下Q?
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;
【注意最新版本的Tomcat中可能没有commonq个文g夹了。所以servlet-api.jar应该的\径ؓ(f)
%CATALINA_HOME%\lib\servlet-api.jar;h据自q情况自己修改Q?br />接着可以启动tomcatQ在IE中访问http://localhost:8080Q如果看到tomcat的欢q页面的话说明安装成功了?
W三步:(x)建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录Q可以看到ROOTQexamples, tomcat-docs之类Tomcat自带的的目录Q?
2.在webapps目录下新Z个目录,起名叫myappQ?
3.myapp下新Z个目录WEB-INFQ注意,目录名称是区分大写的;
4.WEB-INF下新Z个文件web.xmlQ内容如下:(x)
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
</web-app>



5.在myapp下新Z个测试的jsp面Q文件名为index.jspQ文件内容如下:(x)

<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>


6.重启Tomcat
7.打开览器,输入http://localhost:8080/myapp/index.jsp 看到当前旉的话说明成功了?/span>

{案补充

W四步:(x)建立自己的ServletQ写入你的第一个Servlet:在你新徏的Application myapp/WEB-INF/classes/test目录下新建HelloWorld.javapackage test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
    public void doGet(HttpServletRequest request,HttpServletResponse response)th
rows ServletException,IOException
   {
    response.setContentType("text/html");

{案补充

PrintWriter out = response.getWriter();
    out.println("<html><head><title>");
    out.println("This is my first Servlet");
    out.println("</title></head><body>");
    out.println("<h1>Hello,World!</h1>");
    out.println("</body></html>");
  
   }
   }


然后照样用javac HelloWorld.java来编译这个文Ӟ如果出现无法import javax.servl
et.*
   那么是应该把C:\Tomcat\common\lib里面的servlet-api.jar文g拯到C:\JDK\jre\lib\ext中,再次~译Q就没有问题了!



ply 2011-09-03 13:31 发表评论
]]>
struts2 异常处理ȝhttp://www.aygfsteel.com/peiliangye/articles/357856.htmlplyplyFri, 02 Sep 2011 15:07:00 GMThttp://www.aygfsteel.com/peiliangye/articles/357856.htmlhttp://www.aygfsteel.com/peiliangye/comments/357856.htmlhttp://www.aygfsteel.com/peiliangye/articles/357856.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/357856.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/357856.html1---:java.lang.NoClassDefFoundError: org/apache/struts2/dojo/views/jsp/ui/HeadTag

解决办法Q原因缺了dojo的JAR包,引入卛_:struts2-dojo-plugin-2.1.2.jar

The "head" tag renders required JavaScript code to configure Dojo and is required in order to use any of the tags included in the Dojo plugin.

--------------------

If you are planning to nest tags from the Dojo plugin, make sure you set parseContent="false", otherwise each request made by the inner tags will be performed twice.

2---:Unable to load configuration. -bean -jar:file:/F:/Struts2/Struts2/WebRoot/WEB-INF/lib/struts2-core- 2.1.2.jar!/struts-default.xml:46:178

Caused by: Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest -bean -jar:file:/F:/Struts2/Struts2/WebRoot/WEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext
解决办法Q缺JAR包,引入commons-fileupload-1.2.1.jarQcommons-io-1.3.2.jar卛_

3---:No tag "datetimepicker" defined in tag library imported with prefix "s"

原因版本问题Q缺struts-dojo-plugin JAR包,以及(qing)HTML?<HEAD></HEAD>中没有?lt;s:head/>标签

If you're using Struts 2.1.x you're probablymissing the>struts-dojo-plugin. Michal's reference below applies to Struts 2.1.xonly. In the lasts versions (since 2.0.9 I guess), all AJAX are in dojo> plugin.
> > So you need toinclude <%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
> > and <sx:head/>
> >( Temp1:
<sx:datetimepicker name="picker" />
Temp2:
<sx:datetimepicker type="time" name="picker" /><br/>
Temp3:
<sx:datetimepicker value="%{'2008-06-08'}" name="picker" />
Temp4:
<sx:datetimepicker value="date" name="picker" />)
> > and call :<sx:datetimepicker .../>

4---:使用TILES框架

If you use the Tiles 2 plugin, check your tiles.xml file(s) to ensure they contain a DOCTYPE.

<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"><tiles-definitions>


5---:struts2中不支持EL表达?

Struts2.1 tags do not allow evaluation of JSP EL within their attributes.Instead, Struts2 tags evaluate attribute values as OGNL. Allowing bothexpression languages within the same attribute opens major securityvulnerabilities.


6---文g上传q程中取不到文g名和文gcdQ即都取到NULL

原因Q如果页面中file的name=“a”则我们ACTION中设|String aContentType,String aFileName;(此两个其实无所谓,关键是SETҎ(gu))

setA(File file)(){}; setAContentType(String s){};setAFileName(String name){} x式如下:(x)setXContentType() setXFileName().X代表你给FILE取的NAME名字

必须和它相同Q固定格?br />


7---严重: Unable to parse request
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (8523356) exceeds the configured maximum (2097152)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:914)2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [struts.valueStack]
2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: the request was rejected because its size (8523356) exceeds the configured maximum (2097152)
2008-5-27 17:46:51 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [org.apache.catalina.jsp_file]

原因Q上传文件大超q预定大,可以在struts.properties配置文g中设|struts.multipart.maxSize=XXXQXXX为文件大)


8---配置了文件类型限制后Q当传错误类型可以拦截不让用户上传该文gQ可是蟩转的面却没有蟩转到input配置的错误页面,而是q回

Csuccess正确面?/p>

严重: Content-Type not allowed: filedata "upload__5b01657_11a329d4dcf__8000_00000000.tmp" text/plain
《我的打印输出DEBUG语句内容:File:null FlieName:null type:null》即拦截cd成功?br />java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:103)
at com.study.web.util.FileUploadUtil.uploadFile(FileUploadUtil.java:36)
at com.study.web.action.UploadFileAction.execute(UploadFileAction.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)。。?/p>

2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [org.apache.catalina.jsp_file]
2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Could not find property [struts]
2008-5-29 10:59:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Removing file filedata \tmp\upload__5b01657_11a329d4dcf__8000_00000000.tmp

原因?qing)解军_法:(x)在该文g上传Action中只配置了FileUploadInterceptor后缺配|了defaultStack拦截?

在ACTION中配|玩defaultStack拦截器后攚w误消失?br />


9---struts.properties中全局配置文g大小Q再使用默认FileUploadInterceptor拦截器时候能实现拦截的功能但是后台出现异常?/p>

严重: Unable to parse request
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (380) exceeds the configured maximum (10)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:914)

原因Q未知。将全局配置中的限制大小LQ再重新在ACTION中覆盖配|FileUploadInterceptor拦截器设|大和文gcd限制Q可消除异常?br />


10---多文件上传中Q其中一个传被限制的文g如限制aplication/msword(?doc)文gQ允怼文本文g。然而当Ҏ(gu)在一起传的时候,后台能截L(fng)型错误不可传信息Q但?/p>

实际却还是上传成功?/p>

严重: Content-Type not allowed: filedata "upload_4d958287_11a33e76ab9__8000_00000007.tmp" application/msword
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000006.tmp fileName:project.txt fileType:text/plain
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000007.tmp fileName:application base.doc fileType:application/msword
file is :\tmp\upload_4d958287_11a33e76ab9__8000_00000008.tmp fileName:zhongqi-bug.txt fileType:text/plain

原因Q忘Cl承ActionSupportcR承后异常消失?br />


11--文g上传异常Q不能创建File文g

Cannot create type class java.io.File from value C:\Documents and Settings\admin\桌面\OrderReporterServiceImp.java - [unknown location]

原因Q忘C在form表单里将enctype讄成文件上传格式:(x)enctype="multipart/form-data"

12--当用限制文件类型和大小的时候抛出空指针异常

java.lang.NullPointerExceptiondemo.struts2.action.ValidatFileUploadAction.execute(ValidatFileUploadAction.java:71)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)原因Q在ACTION中配|了fileUpload拦截器后忘记了配|默认拦截器QdefautlStack。注意当ACTION中配|自q拦截器后需要显C配|默?/p>

拦截器defaultStack


13--在国际化时候抛I指针异常:(x)

16:31:12,812 ERROR [jsp]:253 - Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException at java.text.MessageFormat.applyPattern(MessageFormat.java:414)

at java.text.MessageFormat.<init>(MessageFormat.java:350)
at com.opensymphony.xwork2.DefaultTextProvider.getText(DefaultTextProvider.java:70)

原因Q忘C在struts.xml中配|国际化帔RQ或者在struts.properties中配|全局国际化常?struts.custom.i18n.resources=globeMessage


14-- struts action的配|文件加载失败:(x)

Unable to load configuration. - result - file:/D:/Java/apache-tomcat-5.5.20/webapps/mysts/WEB-INF/classes/test.xml:10:26

Caused by: No result type specified for result named 'error', perhaps the parent package does not specify the result type? - result - file:/D:/Java/apache-tomcat-5.5.20/webapps/mysts/WEB-INF/classes/test.xml:10:26
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:609)

原因Q忘Cl承包struts-default


15-- struts action 配置文g注意事项Q?/p>

1. 别忘Cl承struts-default默认配置?/p>

2.如果配置命名I间Q一定要?/"开始,例如Qnamespace="/test"

3.每个模块struts action配置文g中都可以配置全局resultQglobal-result l测试不?x)冲H,STRTUS?x)智能寻找该Actionh?/p>

模块STRUTS ACTION配置?/p>

关键? 警告: no configuration found for the specified action

警告: No configuration found for the specified action: 'ShowMessage' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

解决Ҏ(gu)Q?/p>

l过试发现Q是没有正确使用tag的原因,q种情况下,正确的写法应该是Q?lt;s:form name="login" method="post" action="login" >

(zhn)是否添加了actionq个呢?



ply 2011-09-02 23:07 发表评论
]]>
Linux下配|免安装版Tomcat .http://www.aygfsteel.com/peiliangye/articles/357768.htmlplyplyThu, 01 Sep 2011 15:06:00 GMThttp://www.aygfsteel.com/peiliangye/articles/357768.htmlhttp://www.aygfsteel.com/peiliangye/comments/357768.htmlhttp://www.aygfsteel.com/peiliangye/articles/357768.html#Feedback0http://www.aygfsteel.com/peiliangye/comments/commentRss/357768.htmlhttp://www.aygfsteel.com/peiliangye/services/trackbacks/357768.html一、下载免安装版Tomcat

      打开Tomcat主页http://tomcat.apache.org/Q下载Tomcat免安装版Q我q里下蝲的是apache-tomcat-7.0.2.tar.gz?/p>

二、配|Java环境变量

      Java的环境变量已l在前几文章里有了概述Q详l见Q?a >http://www.fengwenxuan.com/index.php/red-hat-enterprise-linux/238.html

三、解压Tomcat

      Tomcat解压~到/usr/local目录?/p>

      # tar zxvf apache-tomcat-7.0.2.tar.gz 

四、启动Tomcat

      # cd /usr/local/apache-tomcat-7.0.2/bin

      # ./startup.sh

      如果启动成功Qshelll端?x)出现如下提C:(x)

 

      Using CATALINA_BASE:   /usr/local/apache-tomcat-7.0.2

      Using CATALINA_HOME:   /usr/local/apache-tomcat-7.0.2

      Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.2/temp

      Using JRE_HOME:       /usr/local/jdk1.6.0_21

      如果l端报错Q基本上可以肯定是Jdk环境变量没有配置好,仔细在检查一下Jdk环境变量的配|?/p>

五、测试Tomcat

      打开火狐览器,地址栏输入http://localhost:8080Q回车后看到Tomcat的LOGOQ表CZ切正常。也可以更改Tomcat目录下的conf文g夹,里面有一个server.xml文gQ修Ҏ(gu)使用80端口Q这h览器只要输入http://localhost/可以直接进入你的主了?/p>

六、停止Tomcat

      # cd /usr/local/apache-tomcat-7.0.2/bin

      # ./shutdown.sh

七、设|开动启动Tomcat

 

Ҏ(gu)一Q?/p>

?usr/local/apache-tomcat-7.0.2/bin/startup.sh ?

JAVA_HOME=/home/fwx/jdk1.6.0_14

CLASSPATH=.:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

export CATALINA_HOME=/usr/local/apache-tomcat-7.0.2
/usr/local/tomcat/bin/catalina.sh start

 

?etc/rc.d/rc.local中加?
/usr/local/apache-tomcat-7.0.2/bin/startup.sh


Ҏ(gu)二:(x)
1、把下面的代码保存ؓ(f)tomcat文gQƈ让它成ؓ(f)可执行文?chmod 755 tomcat.
#!/bin/bash
#
# fengwx0413@163.com
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
#
# processname: tomcat
# description: tomcat is a j2se server
# chkconfig: 2345 86 16
# description: Start up the Tomcat servlet engine.

if [ -f /etc/init.d/functions ]; then
        . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
        . /etc/rc.d/init.d/functions
else
        echo -e "/atomcat: unable to locate functions lib. Cannot continue."
        exit -1
fi

RETVAL=$?
CATALINA_HOME="/usr/local/apache-tomcat-7.0.2"

case "$1" in
start)
        if [ -f $CATALINA_HOME/bin/startup.sh ];
          then
            echo $"Starting Tomcat"
            $CATALINA_HOME/bin/startup.sh
        fi
        ;;
stop)
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];
          then
            echo $"Stopping Tomcat"
            $CATALINA_HOME/bin/shutdown.sh
        fi
        ;;
*)
        echo $"Usage: $0 {start|stop}"
        exit 1
        ;;
esac

exit $RETVAL

2、将tomcat文g拯?etc/init.d/下,q运行:(x)chkconfig --add tomcat

3、在apache-tomcat-7.0.2/bin/catalina.sh文g中加入以下语句:(x)
export JAVA_HOME=/home/fwx/jdk1.6.0_14
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.2

export CATALINA_BASE=/usr/local/apache-tomcat-7.0.2
export CATALINA_TMPDIR=/usr/local/apache-tomcat-7.0.2/temp

启动tomcatQ?service tomcat start
停止tomcat: service tomcat stop 



ply 2011-09-01 23:06 发表评论
]]>
关于getInitParameter()的调?/title><link>http://www.aygfsteel.com/peiliangye/articles/357008.html</link><dc:creator>ply</dc:creator><author>ply</author><pubDate>Sun, 21 Aug 2011 17:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/peiliangye/articles/357008.html</guid><wfw:comment>http://www.aygfsteel.com/peiliangye/comments/357008.html</wfw:comment><comments>http://www.aygfsteel.com/peiliangye/articles/357008.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/peiliangye/comments/commentRss/357008.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/peiliangye/services/trackbacks/357008.html</trackback:ping><description><![CDATA[<p><font face="Verdana">关于getInitParameter()的调?br />关于getInitParameter()的调?nbsp;        <br />getInitParameter()Ҏ(gu)是在GenericServlet接口中新定义的一个方法,用来调用初始化在web.xml中存攄参量?br />在web.xml配置文g中一个servlet中参量的初始化是使用</font></p> <p><font face="Verdana"><init-param></font></p> <p><font face="Verdana"><param-name>name</param-name></font></p> <p><font face="Verdana"><param-value>zhangsan</param-value></font></p> <p><font face="Verdana"></init-param></font></p> <p><font face="Verdana">来实现的。这里的参量只对q个servlet可用?/font></p> <p><font face="Verdana"> </font></p> <p><font face="Verdana">如果通过在web.xml中的ServletContext上下文中定义参量Q那么整个web应用E序中的servlet都可调用Qweb.xml中的格式为:(x)</font></p> <p><font face="Verdana"><context-param></font></p> <p><font face="Verdana"><param-name>test</param-name></font></p> <p><font face="Verdana"><param-value>Is it me</param-value></font></p> <p><font face="Verdana">< context -param></font></p> <p><font face="Verdana"> </font></p> <p><font face="Verdana"> </font></p> <p><font face="Verdana">调用<init-param>中的参量Q?/font></p> <p><font face="Verdana">一般我们写servlet都是用HttpServletcL写,它是实现了GenericServlet接口Q所以它?yu)有getInitParameterQ)Ҏ(gu)。调用格式ؓ(f)Q?/font></p> <p><font face="Verdana">String name = getInitParameter(“name”); ?/font></p> <p><font face="Verdana">String name = getServletConfig().getInitParameter(“name”);</font></p> <p><font face="Verdana"> </font></p> <p><font face="Verdana">调用<context-param>中的参量Q?/font></p> <p><font face="Verdana">调用格式为:(x)</font></p> <p><font face="Verdana">String name =getServletContext(). getInitParameter(“name”); ?/font></p> <p><font face="Verdana">String name = getServletConfig().getServletConfig().getInitParameter(“name”);</font></p> <p><font face="Verdana"> </font></p> <p><font face="Verdana">注意Q?lt;context-param>中定义的参数在Jsp中也能调?/font></p> <p><font face="Verdana"><br /></font></p><img src ="http://www.aygfsteel.com/peiliangye/aggbug/357008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/peiliangye/" target="_blank">ply</a> 2011-08-22 01:44 <a href="http://www.aygfsteel.com/peiliangye/articles/357008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϻӿ</a>| <a href="http://" target="_blank">ֶ</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">Ϸ</a>| <a href="http://" target="_blank">Ӷ</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">᰸</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank">ٰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ѱ</a>| <a href="http://" target="_blank">ǧ</a>| <a href="http://" target="_blank">ʻ</a>| <a href="http://" target="_blank">Զ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>