Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

一、Struts2.0的创建
1),添加jar包
?? 1, commons-fileupload-1.2.1.jar
?? 2, commons-io-1.3.2.jar
?? 3, commons-logging-1.0.4.jar
?? 4, freemarker-2.3.13.jar
?? 5, ognl-2.6.11.jar
?? 6, struts2-core-2.1.6.jar
?? 7, xwork-2.1.2.jar
注:要与Spring整合,让Spring托管Struts的Action,那么需要添加Struts2.0的
???????? struts2-spring-plugin-2.1.6.jar
2),创建struts.xml,放在src目录下,并添加相应的action
? <?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
http://struts.apache.org/dtds/struts-2.0.dtd“>
<struts>??

<include file=”struts-default.xml”/>
<package name=”com.login”? extends=”struts-default”>
?<action name=”login” method=”login”>???
?<result name=”success” type=”redirect”>success.jsp</result>
</action>???
</package>
??? </struts>
3), 在web.xml加入filter,
????????????? (注:用过滤器的原因是:要对传来的各种url进行分类,转向,即过滤。相似的还有servlet
?????????????????????? 而Spring用监听器,listen,当监听到action创建时就注入属性)
<filter>
<filter-name>struts2</filter-name>
<filter-class>
??? org.apache.struts2.dispatcher.FilterDispatcher? //默认就会读取src下的struts.xml
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
4), 做jsp即可


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

注:要与Spring整合,让Spring托管Struts的Action,那么需要添加Struts2.0的
????? struts2-spring-plugin-2.1.6.jar
注入效果:action的属性对象会自动被Spring创建,在action中只需引用即可

1,添加Spring能力
选中以下及自动关联的类库
String 2.0 Core Libraries
String 2.0 Persistence JDBC Libraries
String 2.0 Web Libraries

2, 在web.xml添加spring监听器
<listener>
<listener-class>
??? org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

注:若不用Spring来为Struts的action进行自动属性注入,那么就不必为spring配置监听器,且也不用导入
struts2-spring-plugin-2.1.6.jar, 直接在代码中进行手动注入:
?????????? ApplicationContext context = new ClassPathXmlApplicationContext( “applicationContext.xml” );
????????? ComeAction comeAction = (ComeAction) context.getBean( “comeAction” );
可看出在web.xml配置的多为struts与servlet,因为它们要拦截页面请求的url进行转向,而配置
?? Spring监听器的原因是为了监听Struts action的建立并为其动态注入属性。

3, 将applicationContext.xml放置在web-inf下, 名字可任意如ac.xml,ab.xml
不过要在web.xml指定??
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/a*.xml </param-value>
</context-param>
注:<context-param>也可不加,默认读取的是/WEB-INF/下的applicationContext.xml,只要?????? applicationContext.xml放置在web-inf下即可。

4, 配置 applicationContext.xml, 创建相应的注入属性
如:loginAction有一个userDao属性,设置了get,set方法,那么在 applicationContext.xml,配置:
??? <bean id=”userDao”>
???? </bean>
注:1,loginAction中的属性名userDao一定要与applicationContext.xml中的bean的id相同!!!!!
这样Spring才能自动注入action的属性。指的是与setUserDao()中userDao相同,变量名不必要相同。
因为在注入时,会根据配置文件中的userDao调用action的setUserDao方法,只要此方法存在即可!!
???? ( 以下2,3可不用配 )
?????? 2, 在struts.properties中设置struts.objectFactory属性值
?????????? struts.objectFactory = spring?
????????? 或者是在XML文件中进行常量配置
?????????? struts.xml???? <constant name=”struts.objectFactory” value=”spring” />?
???? 3, 在struts.properties中指定注入方式。name 按照你的action的属性的名字和Spring里的bean的名字匹配,如果匹配就自动装配。这是缺省的
type 按照你的action的属性的类型,在Spring注册的bean中查找,如果相同就自动装配。这需要你在Spring中仅注册了一个此类型的bean
auto Spring会试图自动监测来找到最好的方法自动装配你的action
constructor Spring会自动装配bean的构造函数的参数
ps :
在action的class指定具体的类,Spring自动完成属性的注入,
在action的class指定bean id, Spring托管整个action生命周期.
1, 属性注入:
(1) struts.xml中配置:
?<action name=”login” method=”login”>???
<result name=”success” type=”redirect”>success.jsp</result>
</action>
(2) applicationContext.xml中配置
?在applicationContext.xml中配置此action的属性,要注意的是bean id 要与action内的属性名相同,不用为???????????????? LoginAction本身定义bean id.
这样Spring就只负责action属性的注入,

2, 所有注入:?? 让spring不仅负责action属性的创建,还负责action本身的创建.
? (1) struts.xml中配置:??
?? struts.xml中配置:
? <action name=”login” method=”login”>???
<result name=”success” type=”redirect”>success.jsp</result>
?</action>
? class为Spring中applicationContext.xml中的bean id
?(2) applicationContext.xml中配置
??? 配置loginAction的bean即可.
所有注入的好处: 结合aop,可完成对action执行具体方法时进行拦截,进行日志记录等.


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

<!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts

Configuration 2.0//EN” “http://struts.apache.org/dtds/struts-2.0.dtd” >
<struts>

<!– include节点是struts2中组件化的方式 可以将每个功能模块独立到一

个xml配置文件中 然后用include节点引用 –>
<include file=”struts-default.xml”></include>
<!– package提供了将多个Action组织为一个模块的方式
?package的名字必须是唯一的 package可以扩展 当一个package扩展自
?另一个package时该package会在本身配置的基础上加入扩展的package
?的配置 父package必须在子package前配置
?name:package名称
?extends:继承的父package名称
?abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空

间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action?? –>

<package name=”com.kay.struts2″ extends=”struts-default” namespace=”/test”>
<interceptors>
??? <!– 定义拦截器
???????? name:拦截器名称
???????? class:拦截器类路径
???? –>
??? <interceptor name=”timer”

class=”com.kay.timer”></interceptor>
??? <interceptor name=”logger”

class=”com.kay.logger”></interceptor>
??? <!– 定义拦截器栈 –>
??? <interceptor-stack name=”mystack”>
??????? <interceptor-ref name=”timer”></interceptor-ref>
??????? <interceptor-ref name=”logger”></interceptor-ref>
??? </interceptor-stack>
</interceptors>

<!– 定义默认的拦截器 每个Action都会自动引用
? 如果Action中引用了其它的拦截器 默认的拦截器将无效 –>
<default-interceptor-ref name=”mystack”></default-interceptor-

ref>
<!– 全局results配置 –>
<global-results>
??? <result name=”input”>/error.jsp</result>
</global-results>

<!– Action配置 一个Action可以被多次映射(只要action配置中的name

不同)
????? name:action名称
????? class: 对应的类的路径
method: 调用Action中的方法名
–>
<action name=”hello”

class=”com.kay.struts2.Action.LoginAction”>
??? <!– 引用拦截器
???????? name:拦截器名称或拦截器栈名称
???? –>
??? <interceptor-ref name=”timer”></interceptor-ref>

??? <!– 节点配置
???????? name : result名称 和Action中返回的值相同
???????? type : result类型 不写则选用superpackage的type struts

-default.xml中的默认为dispatcher
???? –>
?<result name=”success” type=”dispatcher”>/talk.jsp</result>
?<!– 参数设置
????? name:对应Action中的get/set方法
?–>
?<param name=”url”>http://www.sina.com</param>
</action>
</package>
</struts>
ps: package? extends
<package name=”com.manage.checkLogin” extends=”struts-default”>
….
</package>

<package name=”com.manage.news” namespace=”/manage/news” extends=”com.manage.checkLogin”>
….
</package>

当多个配置文件都要引用一个package时,可将其放入一配置文件中,在struts.xml include其它文件的同时,include此文件,接着在各配置文件中直接extends此包即可。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

<c:forEach var=”modules” items=”${SES_powers.modules}” varStatus=”status”>
?????
? </c:forEach>

SES_powers.modules 会自动调用SES_powers的getModules()方法,(即使没有modules这个变量),这样避免了在页面中引用JAVA代码


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

EI是jsp-2.0规范的一部分,tomcat-5.x版本以上都已经能够支持jsp-2.0规范,
<%@ page isELIgnored=”true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

.语法结构(1)使用el的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示出来。

??? ${expression}

1,与页面元素的操作:
??

如果我们有${username}这样一个正则表达式,它回去依次调用pageContext.getAttribute(“username”) -> request.getAttribute(“username”) -> session.getAttribute(“username”) -> application.getAttribute(“username”),只要找到某一个不为空的值就立刻返回。

?(2)指定具体的域

??????

el中的作用域 对应关系
pageContext(1) 当前页的pageContext对象
pageScope 把page作用域中的数据映射为一个map对象
requestScope(2) 把request作用域中的数据映射为一个map对象
sessionScope 把session作用域中的数据映射为一个map对象
applicationScope 把application作用域中的数据映射为一个map对象
param 对应request.getParameter()
paramValues(3) 对应request.getParameterValues()
header(4) 对应request.getHeader()
headerValues 对应request.getHeaderValues()
cookie(5) 对应request.getCookies()
initParam(6) 对应ServletContext.getInitParamter()

?? session.getAttribute(“username”)?? 等同于 ${sessionScope:username}

?? request.getParameter(String name)? 等同于 ${param:name}

(3)EI运算符

???? ${ 1 + 2 }? 结果:3

???? ${ 1 <= 2 } 结果: true

??? ${ true && false } 结果:false

??? ${ empty 2 } 结果:false //判断对象是否为空

??? ${ not empty 2 }结果:true

?? ${ 2>1 ? “yes” : “no” }

? 对string类型进行操作:

? ${fn:substring(booking.orderId,0,6)}

?? fn:contains(string, substring)? fn:endsWith(string, suffix)?? fn:length(item)? fn:split(string, separator)? fn:trim(string)

(4)调用对象方法

<c:forEach var=”modules” items=”${SES_powers.modules}” varStatus=”status”>
?????
? </c:forEach>

SES_powers.modules 会自动调用SES_powers的getModules()方法,(即使没有modules这个变量),这样避免了在页面中引用JAVA代码

注:向方法中传参http://tech.ddvip.com/2009-04/1238857014113535.html

一般最好在程序中就将数据取出,在JSP页面只进行读取数据的操作

(5)集合操作

Map
Map mapValue? = new HashMap();
?? mapValue.put(“key1”, “value1”);
?? mapValue.put(“key2”, “value2”);

request.setAttribute(“mapvalue”, mapValue);
———————————————El表达式获取
<li>输出map,采用.进行导航,也称存取器</li><br>
mapvalue.key1:${mapvalue.key1 }<br>
mapvalue.key2:${mapvalue.key2 }<br>

?List

${userlist[4].username }

(6)数组

? User[] users = new User[10];

${users[2].username }


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,创建变量 <c:set>
<c:set>标签具有以下一些属性:
var:所定义或者使用的变量的名称。
scope:该变量的作用域,缺省值为page。
value:变量的值。
target :javabean名称,若存在必须指定property属性
property:javabean实例名称
例:
<c:set var=”i”? value=”0″/>
应用: ${i}

<c:set value=”xiaoT” target=”${User}” property=”userName”>
相当于:User u = new User(); u.setUserName( “xiaoT” );

2, 输出? <c:out>????? 如<c:out value=”${i}”>? 等同于 ${i}

3, 分支语句
<c:if test=”${1<2}”>????? <a href=”index.action”>index</a>??? <c:if>
在满足条件时输出 <a href=”index.action”>index</a>
因没有<c:else> 多重分支为:
<c:choose>
<c:when test=”${1<2}”>?????? </c:when>??????????????? 等同于<c:if> 为 if
<c:otherwise>?????????????????????????????????????????????????????? 等同于?????????
</c:choose>

4, 数据格式化函数

格式化日期
<fmt:formatDate value=”${isoDate}” type=”both”/>

-定制数字格式时,# 表示按照默认格式来
:<fmt:formatNumber value=”1234567890″ type=”number” pattern=”#,#00.0#” />?

将字符串转化到正确的数字
<fmt:parseNumber type=”number” >123.02a</fmt:parseNumber>


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

得到action, request, session传来的数据
action? #property
<s:property value=”#session[‘key’]”/>?? 或 <s:property value=”#session.key”/>?

<s:select list=”#request.allModules” listKey=”every” listValue=”name” name=”powerInfo.fid”/>

${sessionScope.key}?? //注:struts2.0标签中若用EI表达式,可能会得不到值

Struts2.0标签 实现了JSTL + EI? 功能

非UI
1,选择
<s:if test=””></s:if>
<s:elseif test=””></s:elseif>
<s:else></s:else>—–这3个标签一起使用,表示条件判断
<s:if test=”#session[‘key’]==null”>?

2,循环
<s:iterator id=”book” value=”books” status=”index”>?

<!—输出当前元素的属性–>?
<s:property value=”property”/>?

<!—输出当前迭代元素的索引–>?
<s:property value=”#index.index”/>?

<!—输出当前迭代了几个元素–>?
<s:property value=”#index.count”/>??

<!—返回当前迭代元素的索引是否为奇数–>?
<s:property value=”#index.odd”/>??

<!—返回当前迭代元素的索引是否为偶数–>?
<s:property value=”#index.event”/>?

<!—返回当前元素是否为第一个–>?
<s:property value=”#index.first”/>?

<!—返回当前元素是否为最后一个–>?
<s:property value=”#index.last”/>?

</s:iterator>?
UI
1,URL
(1)? <s:url value=”editGadget.action”/>????????????? 区别于:<s:a href=”index.jsp”> <s:a href=””></s:a>—–超链接,类似于html里的<a></a>

(2)?? <s:url action=”showBook”>
??? <s:param name=”author” value=”‘yeeku'” />
</s:url>

(3)?? <s:url id=”url” action=”preModifyCategoryName” includeParams=”get” namespace=”/category”>
??? <s:param name=”categoryId” value=”%{categoryId}”/>
?</s:url>

注:<s:actionerror/>—–如果action的errors有值那么显示出来
<s:actionmessage/>—–如果action的message有值那么显示出来

2,下拉框
(1) <s:combobox label=”请选择您喜欢的图书” theme=”css_xhtml” labelposition=”top”
list=”{‘Spring2.0宝典’ , ‘轻量级J2EE企业应用实战’ , ‘基于J2EE的Ajax宝典’}”
size=”20″ maxlength=”20″ name=”book”/>

与<s:select …/>标签不同的是,对于下面的下拉列表,无需指定listKey和listValue属性,因为此处的下拉列表,不再用于发送请求参数,而仅仅是用于辅助输入,因此该下拉列表的value没有任何意义
(2) Select
?List
<s:select name=”b” label=”请选择您喜欢的图书” labelposition=”top” multiple=”true”
??? list=”#bs.books”
??? listKey=”author”
??? listValue=”name”/>
Map
<s:select name=”b” label=”请选择您想选择出版日期” labelposition=”top”
??? list=”#{‘Spring2.0宝典’:’2006年10月’ , ‘轻量级J2EE企业应用实战’:’2007月4月’ , ‘基于J2EE的Ajax宝典’:’2007年6月’}”
??? listKey=”key”
??? listValue=”value”/>

<tr>
??? <td align=”center”>父权限</td>
??? <td align=”center”>
??? <s:select theme = “simple” label = “父权限”? list=”#request.allModules” listKey=”id” listValue=”name” name=”powerInfo.fid”/>
???? </td>???
?</tr>???????? //加theme = “simple”代表只生成一个简单的select,不用其自动生成<tr>之类, label就是在自动生成的情况下指示前td名称
????????????????? 注:listKey代表<option value>中的value值,?????? listValue 为<option>listValue</option>之间的数据

3,多个checkbox
(1) List
<s:checkboxlist name=”a” label=”请选择您喜欢的图书” labelposition=”top”
list=”{‘Spring2.0宝典’ , ‘轻量级J2EE企业应用实战’ , ‘基于J2EE的Ajax宝典’}”/>

<s:checkboxlist name=”b” label=”请选择您喜欢的图书” labelposition=”top”
list=”#bs.books”
listKey=”name”
listValue=”author”/>
(2)Map
<s:checkboxlist name=”b” label=”请选择您想选择出版日期” labelposition=”top”
list=”#{‘Spring2.0宝典’:’2006年10月’ , ‘轻量级J2EE企业应用实战’:’2007月4月’ , ‘基于J2EE的Ajax宝典’:’2007年6月’}”
listKey=”key”
listValue=”value”/>

4, s:radio生成多个单选框
<s:radio name=”c” label=”请选择您喜欢的图书” labelposition=”top”
list=”#bs.books”
listKey=”author”
listValue=”name”/>

5 s:optiontransferselect来生成可移动列表项的下拉列表框 , s:optgroup生成下拉选择框的选项组
s:updownselect生成可上下移动选项的下拉选择框 ,?????????????? s:doubleselect生成级联下拉列表框
s:tree和s:treenode标签生成静态树 ,

<s:tree label=”计算机图书” id=”book” theme=”ajax”
showRootGrid=”true” showGrid=”true” treeSelectedTopic=”treeSelected”>
<s:treenode theme=”ajax” label=”李刚” id=”yeeku”>
<s:treenode theme=”ajax” label=”Spring2.0宝典” id=”spring”/>
<s:treenode theme=”ajax” label=”轻量级J2EE企业应用实战” id=”lightweight”/>
<s:treenode theme=”ajax” label=”基于J2EE的Ajax宝典” id=”ajax”/>
</s:treenode>
<s:treenode theme=”ajax” label=”David” id=”David”>
<s:treenode theme=”ajax” label=”JavaScript: The Definitive Guide” id=”javascript”/>
</s:treenode>
<s:treenode theme=”ajax” label=”Johnson” id=”Johnson”>
<s:treenode theme=”ajax” label=”Expert One-on-One J2EE Design and Development” id=”j2ee”/>
</s:treenode>
</s:tree>

7, s:append标签拼接两个集合
<s:append id=”newList”>
<s:param value=”{‘Spring2.0宝典’,’轻量级J2EE企业应用实战’,’基于J2EE的Ajax宝典’}” />
<s:param value=”{‘新东方IT培训’, ‘东方标准职业教育’}” />
</s:append>

8, 使用s:generator生成集合
使用generator标签可以将指定字符串按指定分隔符分隔成多个子串,临时生成的多个子串可以使用iterator标签迭代输出。可以这样理解:generator将一个字符串转化成一个集合。在该标签的标签体内,整个临时生成的集合将位于ValueStack的顶端,但一旦该标签结束,该集合将被移出ValueStack。

<s:generator val=”‘Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典'”
separator=”,” id=”books” count=”2″/>
${books} 代表一个Iterator?? s:iterator>

<s:generator val=”‘Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典'” separator=”,”>
<s:iterator status=”st”>
<tr <s:if test=”#st.odd”>style=”background-color:#bbbbbb”</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:generator>

9,<s:datetimepicker></s:datetimepicker>—–日期输入框,
<s:file></s:file>—–文件上传
<s:form action=””></s:form>—–获取相应form的值
<s:text name=””></s:text>—–I18n文本信息
<s:textarea></s:textarea>—–文本域输入框
<s:textfield></s:textfield>—–文本输入框


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,分区注意:
(1)一个挂载点? 为”/” ,自动分配boot,home等,挂载点 格式为ext3
(2)一个挂载点为”swap” 大小为内存的2倍
只要这两个挂载点即可,格式为swap
2, 若先装xp,之后安装的linux,在分区时注意的是不要将xp格掉或丢失其它盘的信息,一般下, hd1为c盘,hd5为d盘待,格式为fat或nfts
不要在关键盘上安装linux,要先空出一个盘来装linux
3, 装完linux后中,又装xp,会将linux的引导程序覆盖掉,造成开机直接进入xp,不能进入linux,解决方法:
(1)从光盘启动,在安装初始画面输入:linux rescue 进行修复区
(2)选择语言,网络等一直进入命令行,输入:
???????? chroot /mnt/sysimage
???????? grub -install /dev/hax? (可先用fdisk -l 确定linux在哪个盘上,从而确定x)
(3)之后若进入grub grub>? 输入:find /boot/grub/grub.conf 或find /boot/grub/menu.lst? 确定(hd0,1)
???? root (hd0,1)? (要有空格)
???? setup (hd0)?
???? quit 退出
???? reboot 重启
4,设置开机等待时间及显示开机画面的内容
/etc/grub.conf???????????? timeout = 10

5,linux下安装windows下软件:虚拟环境??WINE


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,bdf :查看磁盘容量使用情况。 clear: 清屏?? w :分组显示用户。
2,pwd:显示当前所在上当。
3,ls:显示目录信息。
ls -a: 显示所有文件,如隐藏文件
ll:显示目录权限。 等同于 ls -l
4,cd:回到用户目录
5,rmdir:删除空目录
6,chmod:更改文件/目录存取权限
7,chgrp:更改用户组别
8,mv:移动文件或重命名文件??? (当文件同是文件或同是目录时)
9,cp:复制???? cp-i: 覆盖前询问 cp -r dir1 dri2 拷目录
10,rm:删除文件??? rm -f :强制删除
rm -r:删除目录包括子目录
rm -i:删除前询问
11,mkdir:建立系统目录
12,ps:查看进程
13,who:查看谁在线上??? who -u??????? whoami:查看当前用户身份
14,pg:以页为单位查看文件内容 pg ..|more 一行一行显示
15,grep “zxs” /etc/user
16,r:重复上一次命令
17,ln -s /u1/huapin???????? hp:创建快捷方式
18,history:最近n条记录
19,alias v= “vi? ato4d.4gl”??? unalias v 取消别名
20,通配符:? 一个 * 任意多个? []指定的一个
ls a[123] a1,a2,a3??? ls a[1-9] a1,a2,….a9
21,ls |more 分屏显示
22,排序:sort -d (字典顺序)
23,./ 当前目录? ../? 父目录下?? /? 根目录
24,mkdir -m 755 4gl???????? chmod 755 a.txt????????? r:4,w:2,e:1
25,cd:回到用户目录? cd / 回到根目录 cd – 回到上次打开目录?????? cd ~用户名??? (home下用户目录)
26,/bin (binary) 常用命令???????? /boot? 启动程序?????? /dev 设备???????? /etc 配置文件
/sbin (system binary 系统管理程序)??? /home 用户集中地??? /lib 库文件
/mnt 挂临时文件,移动设备? /proc 系统信息?????? /root? 超级用户目录??? /tmp 临时文件??? /usr 存用户应用程序的文件
27,rpm -ivh ……??? i 使用rpm安装模式 v 显示安装过程??? h 进度以#显示
rpm -* 卸载
tar cvf? … 压缩?? c 创建 v 显示信息 f 必不可少
tar xvf …? 解压

28,ls;fd?? 连续执行多条命令,用分号隔开
29,查命令所在? whereis cp
30,who, w, whoami
31,. 重复上次操作
32,find /u1/asong -name “a*” -print? 搜索
33,bath编写??
(1) 文件以#!/bin/sh开头
(2) 编写unix命令
(3) chmod 777 myshell
(4)? 运行: ./myshell
34,设置文件所有者
chown -R hp[:tpic] .wine
35,设置文件权限
chmod -R 777 .wine


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
1, vi filename 编辑或建立档案
2,vi +18 filename 开启文本到第18行
3,enter 向下一行
backspace 向左移一个字元
spacebar   向右移动一个字元
4,ctrl + F 向前滚动一个屏幕
ctrl + D 向前滚动半个屏幕
ctrl + B 向后滚动一个屏幕
ctrl + U 向后滚动半个屏幕
ctrl + E 向下一行
ctrl + Y 向上一行
5,a 在游标右方插入字元
A 在行尾游标右方插入字元
i   在游标左方插入字元
I   在行首游标左方插入字元
o  在游标下方插入一行
O 在游标上方插入一行
x  删除字元   
X  向前删除字元
dd 删除行 大:5,10d删除第5-10行
G  最后一行 21G 到第21行
/string 搜索字符串  ?string 向上     N:上一个 n:下一个 
r: 以另一字元代替游标所在字元 
R 连续修正字元,会一直处于输入模式 
q! exit 但不save          w:save                  wq: 保存退出 
nyy 复制n行 
u  撤消上次输入 
D  删除自游标起到行尾的字元 
d^ 删除自游标起到行首的字元 
dw 删除一个单词 
ndd: 删除自当前光标所在行以下的n行 
s     删除游标所在之字元,并由命令模式进入输入模式 
S  删除游标所在列,并由命令模式进行输入模式 
h 左 l 右 j 下 k 上       
J 删除下一行所有空格并提升一行。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
煮八宝粥,将难煮的豆子和米放进普通的保温瓶中,加入开水,防置十几个小时,即可倒出用普通锅煮,煮出来的粥粘粘糯懦?


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

,拆线图

//数据,JSON
var murl = ‘data.aspx’;
var store = new Ext.data.JsonStore({
url: murl,
autoLoad:true,
root: ‘images’,
fields: [‘name’, ‘visits’, ‘views’]
});

//显示
new Ext.Panel({
iconCls:’chart’,
title: ‘ExtJS.com Visits Trend, 2007/2008 (Simple styling)’,
frame:true,
renderTo: ‘container’,
width:500,
height:300,
layout:’fit’,

items: {
??? xtype: ‘linechart’,
??? store: store,
??? url: ‘../ExtLib/resources/charts.swf’,
??? xField: ‘name’,
??? yField: ‘visits’,
??? yAxis: new Ext.chart.NumericAxis({
??????? displayName: ‘Visits’,
??????? labelRenderer : Ext.util.Format.numberRenderer(‘0,0’)
??? }),
??? tipRenderer : function(chart, record){
??????? return Ext.util.Format.number(record.data.visits, ‘0,0’) + ‘ visits in ‘ + record.data.name;
??? }
}
});


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,引入文件:应用extjs 需要在页面中引入extjs 的样式及extjs 库文件,样式文件为resources/css/extall.css,extjs 的js 库文件主要包含两个,adapter/ext/ext-base.js 及ext-all.js,其中ext-base.js 表示框架基础库,ext-all.js 是extjs 的核心库

2, 提示框调用:Ext.Msg.alert(“提示”,”须提供订单号!”);? 需要注意的是 MessageBox 对象是异步的。不同于 JavaScript中原生的alert(它会暂停浏览器的执行),显示 MessageBox 不会中断代码的运行。由于这个原因,如果代码需要在用户对 MessageBox 做出反馈之后执行,则必须用到回调函数 Ext.Msg.alert(“提示”,”须提供订单号!”, myfunction);
Ext.Msg.show({
title:’Save Changes?’,
msg: ‘You are closing a tab that has unsaved changes. Would you like to save your changes?’,
buttons: Ext.Msg.YESNOCANCEL,
fn: processResult,? //执行完之后要调用的函数
animEl: ‘elId’,
icon: Ext.MessageBox.QUESTION
});
function processResult(){
alert(‘bbb’);
}
相应的还有:confirm,prompt

3,创建组件:
var obj={title:”hello”,width:300,height:200,html:’Hello,easyjf open source’};
var panel=new Ext.Panel(obj); panel.render(“hello”);? //hello控件的ID,将在ID为hello的控件上创建一个面板,或直接在obj内用renderTo指定。
<div id=”hello”>&nbsp;</div>

在api中找到要用的控件,用new创建,要传的参数用obj建立,里面即是api指示的属性。最后通过render输出。
如:new Ext.Button({id:”btn”,text:”myButton”}).render(“hello”);
new Ext.form.TextField({id:”btn”,value:”first”,width:200}) .render(“hello”);

4,事件
Ext.get(“btnAlert”).addListener(“click”,a);
//为ID为btnAlert的控件增加click事件 a等同于:document.getElementById(“btnAlert”).onclick=a;
延迟处理:Ext.get(“btnAlert”).on(“click”,a,this,{delay:2000});? //为btnAlert增加a方法,延迟2秒执行

5,面板
面板由以下几个部分组成,一个顶部工具栏、一个底部工具栏、面板头部、面板尾部、面板主区域几个部分组件。

6,窗口
var i=0;
function newWin()
{
var win=new Ext.Window({title:”窗口”+i++,
width:400,
height:300,
maximizable:true});
win.show();
}
Ext.onReady(function(){
Ext.get(“btn”).on(“click”,newWin);
});

7,布局
ExtJS 的容器组件包含一个layout 及layoutConfig 配置属性,这两个属性用来指定容器使用的布局及布局的详细配置信息,如果没有指定容器组件的layout 则默认会使用ContainerLayout 作为布局,该布局只是简单的把元素放到容器中,,常用的布局有border、column、fit、form、card、tabel等布局。
使用方式:指定布局方式,指定位置(可选)
Ext.onReady(function(){
new Ext.Panel({
renderTo:”hello”,
width:400,
height:200,
layout:”column”,
items:[{columnWidth:.5,
title:”面板1″},
{columnWidth:.5,
title:”面板2″}
]
});
注:items:传入的单独一个项,应直接传入一个对象的引用( 如items: {…})。多个项应以数组的类型传入(如items: [{…}, {…}])。
如:items:[
{fieldLabel:”请输入姓名”,name:”name”,xtype:”button”,text:”hello”},
//用xtype指定使用的控件,控件类型为Ext.Componentxtype
{fieldLabel:”请输入地址”,name:”address”}] //默认为textbox

1)Column布局:layout:”column” 在items中用ColumnWidth指定占据的宽度即可
2)Border区域布局 。该布局把容器分成东南西北中五个区域,分别由east,south, west,north, cente来表示
layout:”Border” 在items中用region:”east” 指定位置。
3)fit布局:自动用子填充父容器,以第一个子为主,其它加上也是无用。
4) Form 布局是一种专门用于管理表单中输入字段的布局,这种布局主要用于在程序中创建表单字段或表单元素等使用,在实际应用中,Ext.form.FormPanel 这个类默认布局使用的是Form 布局,而且FormPanel还会创建与<form> 标签相关的组件,因此一般情况下我们直接使用FormPanel 即可。
new Ext.form.FormPanel({
renderTo:”hello”,? //指定输出
title:”容器组件”,
width:300,
labelAlign:”right”,
height:120,
defaultType: ‘textfield’,
items:[
{fieldLabel:”请输入姓名”,name:”name”},
{fieldLabel:”请输入地址”,name:”address”},
{fieldLabel:”请输入电话”,name:”tel”}
] }
);
});
5)Accordion 布局由类Ext.layout.Accordion 定义,名称为accordion,表示可折叠的布局,也就是说使用该布局的容器组件中的子元素是可折叠的形式,有个动态的上下卷动效果。在窗口属性 layoutConfig 中指定布局配置参数animate 为true,表示在执行展开折叠时是否应
用动画效果。
6)Table 布局,该布局负责把容器中的子元素按照类似普通html 标签排列
Ext.onReady(function(){
var panel=new Ext.Panel({
renderTo:”hello”,
title:”容器组件”,
width:500,
height:200,
layout:”table”,
layoutConfig: {
columns: 3?? //指定列数
},
items:[{title:”子元素1″,html:”这是子元素1中的内容”,rowspan:2,height:100}, //指定每个占用的td
{title:”子元素2″,html:”这是子元素2中的内容”,colspan:2},
{title:”子元素3″,html:”这是子元素3中的内容”},
{title:”子元素4″,html:”这是子元素4中的内容”}
] }
);
});

8,表格控件:表格由类Ext.grid.GridPanel 定义,继承自Panel,其xtype 为grid。ExtJS 中,表格Grid必须包含列定义信息, 并指定表格的数据存储器Store 。表格的列信息由类Ext.grid.ColumnModel 定义、而表格的数据存储器由Ext.data.Store 定义,数据存储器根据解
析的数据不同分为JsonStore、SimpleStroe、GroupingStore 等。
1),显示数据,故要指定数据,在属性中有一store,用来指定数据,此外还有有列名,列名用cm定义
Ext.onReady(function(){
//指定数据
var data=[ [1, ‘EasyJWeb’, ‘EasyJF’,’www.easyjf.com’],
[2, ‘jfox’, ‘huihoo’,’www.huihoo.org’],
[3, ‘jdon’, ‘jdon’,’www.jdon.com’],
[4, ‘springside’, ‘springside’,’www.springside.org.cn’] ];
var store=new Ext.data.SimpleStore({data:data,fields:[“id”,”name”,”organization”,”homepage”]});

//指定列名
var colM=new Ext.grid.ColumnModel([{header:”项目名称”,dataIndex:”name”,sortable:true},
{header:”开发团队”,dataIndex:”organization”,sortable:true},
{header:”网址”,dataIndex:”homepage”}]);

//创建
var grid = new Ext.grid.GridPanel({
renderTo:”hello”,
title:”中国Java开源产品及团队”,
height:200,
width:600,
cm:colM,
store:store,
autoExpandColumn:2
});
});

9,可编辑表格控件EditorGridPanel,可编辑表格是指可以直接在表格的单元格对表格的数据进行编辑,ExtJS 中的可编辑表格由
类Ext.grid.EditorGridPanel 表示,xtype 为editorgrid。使用EditorGridPanel 与使用普通的GridPanel 方式一样,区别只是在定义列信息的时候,可以指定某一列使用的编辑即可。
var colM=new Ext.grid.ColumnModel([{
header:”姓名”,
dataIndex:”name”,
sortable:true,
editor:new Ext.form.TextField()},
{header:”性别”,
dataIndex:”sex”
},
。当对一个单元格进行编辑完之后,就会触发afteredit 事件,可以通过该事件处理函数来处理单元格的信息编辑,把编辑后的数据保存到服务器。

10,数据存储Stroe
1),record ,一个Record 可以理解为关系数据表中的一行,也可以称为记录。Record 对象中即包含了记录(行中各列)的定义信息(也就是该记录包含哪些字段,每一个字段的数据类型等),同时又包含了记录具体的数据信息(也就是各个字段的值)。
Ext.onReady(function(){
var MyRecord = Ext.data.Record.create([?? //指定列
{name: ‘title’},
{name: ‘username’, mapping: ‘author’},
{name: ‘loginTimes’, type: ‘int’},
{name: ‘lastLoginTime’, mapping: ‘loginTime’, type: ‘date’}
]);
var r=new MyRecord({?? //赋值
title:”日志标题”,
username:”easyjf”,
loginTimes:100,
loginTime:new Date()
});
alert(MyRecord.getField(“username”).mapping);
alert(MyRecord.getField(“lastLoginTime”).type);
alert(r.data.username);
alert(r.get(“loginTimes”));
});
2) store:一个Store 包含多个Record,同时Store 又包含了数据来源,数据解析器等相关信息,Store 通过调用具体的数据解析器(DataReader)来解析指定类型或格式的数据(DataProxy),并转换成记录集的形式保存在Store 中,作为其它控件的数据输入。
数据存储器由Ext.data.Store 类定义,一个完整的数据存储器要知道数据源(DataProxy)及数据解析方式(DataReader)才能工作
DataReader:
ArrayReader Ext.data.ArrayReader-数组解析器,用于读取二维数组中的信息,并转换成记录集Record对象
JsonReader? Ext.data.JsonReader-Json 数据解析器,用于读取JSON 格式的数据信息,并转换成记录集Record 对象
XmlReader??? Ext.data.XmlReader-XML 文档数据解析器,用于把XML 文档数据转换成记录集Record对象
DataProxy: DataProxy 字面解释就是数据代理,也可以理解为数据源,也即从哪儿或如何得到需要交给DataReader 解析的数据。

11 、TreePanel
Ext.onReady(function(){
var root=new Ext.tree.TreeNode({
id:”root”,
text:”树的根”});

root.appendChild(new Ext.tree.TreeNode({
id:”c1″,
text:”子节点1″
}));

var tree=new Ext.tree.TreePanel({
renderTo:”hello”,
root:root,
width:100? //可用loader: new Ext.tree.TreeLoader({url:”treedata.js”}), 来动态加载数据,此时root要用AsyncTreeNode类型
});
});


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1, EXTJS:UI全部帮你搞定,不用费劲去弄样式! 浏览器兼容性好,在各各浏览器下测试都OK! 和后台代码无关,不管后面用C#也好 JAVA也好 还是PHP 都和它没关系。 动画效果,EXTJS的动画效果做得很不错,提高了用户的感知度。
缺点: 开发周期延长(要先学习才能灵活使用)
2,ExtJS是一个Ajax框架,是一个用javascript写的,用于在客户端创建丰富多彩的web应用程序界面。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

session是用户信息的共享区域,在一个类中放数据到session中时,意味着这些数据要让多个页面共享,那么在命名的时候一定要特殊,
避免变量名相同,造成数据重叠!


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

若允许用户在没有权限的情况下可以看到后台的页面,则可通过分析后台页面文件来生成新用户,进而进入后台。
如:一后台页面可以看到,当然不能操作。找到其增加用户的页面,选择好数据,在地址栏中进行插入:
http://www.telishou.com/manage/admin/insert.action?admin.name=123&password=123&power=管理员
完成用户的增添。即使权限不在插入页面中设置,可找到update页面也利用地址栏方式修改。
地址栏传参方式可避开页面中设置的验证条件,向数据库中插入一些非法的数据。

向数据库中插入一些非法的数据对应方法:
?????????????????????????????????? 1,禁止没有权限的用户得到权限页面文件,对insert,update,delete,select操作加上必要的身份识别:没有权限?? 者不可执行操作。
?????????????????????????????????? 2,验证要在服务器上进行,而不是在客户前端通过js验证。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,搜索引擎的蜘蛛再怎么爬,能找到的无非是文字和连接

2,关键字覆盖范围并不是越宽越好,因为一旦搜索引擎发现关键字与网站内容不符,则认为是在舞弊,这样网站就极有可能被屏蔽,尽可能选择与网页目标市场相尽的关键词。

3,title里一般是网站的核心关键词,即目标关键词,也是搜索引擎比较注重的部分,不要堆积关键字。

description是比较重要的,一般他会和title一起出现在搜索结果里,所以description里不仅要包含你的目标关键词,还要是一段简单的话,向目标客户说明你网站的主题,你网站是做什么的,有什么优势。

注意文章的正文前100字,因为搜索引擎的关注顺序为:title?-description?-正文前100字

Title : 内容关键字(文章标题)热门关键字

<META NAME =”keywords” CONTENT=” “>

Keywords : 内容关键字,热门关键字,(多个)

<META NAME=”description” CONTENT=”关键字 页面主要内容”>

注:先在页面内容上尽可能多的加入热门关键字,之后再做title,keywords,description. 这三个要加入的内容主要来自内容所引用的热门关键字。一般:title:一句话或两个,keywords:三到五个 description:不多于80个字符。这三个内容要统一。开头要高度近似。选择关键字时要考虑的是用户会不会用此词来进行搜索,若不会,加入意义也不大


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

WindySky 个人图书倌 ? ? ? ? ? ? ? ? ? ? ? ?? http://www.360doc.com/forumfocus.aspx??????

?Java基础例子 ?????????? ? ? ? ? ? ? ? ? ? ? ? ?? ? http://www.exampledepot.com/egs/

?据类找JAR包?????????? ? ? ? ? ? ? ? ? ? ? ? ?? ? http://www.findjar.com/

?java在线API??????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html

?Hibernate3.2 API?????????? ? ? ? ? ? ? ? ?? ? ? http://www.hibernate.org/hib_docs/v3/api/

?Spring Framework API 2.5 ? ? ? ? ? ? ???? http://static.springframework.org/spring/docs/2.5.x/api/index.html

?Struts 1.3.8 API?????????????????????????? ? ?? http://struts.apache.org/1.3.8/apidocs/index.html

?Struts 2 Core 2.0.11.1 API ? ? ? ? ?? ?? ? http://struts.apache.org/2.0.11.1/struts2-core/apidocs/index.html

?Struts 2 标签API????????????????????????????? http://struts.apache.org/2.0.14/docs/tag-reference.html

?JSTL 标签 API? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

JSTL?? 实现标签的类库 ? ? ? ? ? ? ? ? ? ?? http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html

Web Service API ???????????????????????????? http://java.sun.com/webservices/reference/apis-docs/index.jsp

JavaScript???? API???????????????????????????? http://krook.org/jsdom/????

???????????????????????????????????????????????????? http://www.gotapi.com/html

CSS,HTML在线学习??????????????????????? http://www.w3schools.com/

?据类名查看其方法???? ? ? ? ? ? ? ? ? ? ? ? http://www.docjar.com/

?看书????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? http://book.csdn.net/
?
?维基百科???????????????? http://zh.wikipedia.org/w/index.php?title=Wikipedia:%E9%A6%96%E9%A1%B5&variant=zh-cn

?ajax?????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? http://www.okajax.com/

?jquery ?????????????????????????????????????????? http://bbs.jquery.org.cn/index.php? goodasong 8a
?????????????????????????????????????????????????????
?jquery api ?????????????????????????????????????????????????? http://docs.jquery.com/

jquery 例子????????????????????????????????????? http://visualjquery.com/

正则表达式???????????????????????????????????? http://www.regexplib.com?? 在线测试:http://regexpal.com/

源程序????????????????????? http://sourceforge.net/index.php http://www.codeplex.com/???? 国内.net源码 http://www.51aspx.com/
???
服务器配置应用查询 ??http://tomcat.apache.org/

各种连接字符串:????? http://www.connectionstrings.com/

google api???????????????? http://code.google.com/intl/zh-CN/

JS?????????????????????????? http://www.ijavascript.cn/

博客园?????????????????? http://dotnet.cnblogs.com/
c#开发工具?? ??? ??? ??http://msdn.microsoft.com/zh-cn/vcsharp/aa336818.aspx
.NET开源网站 ? ? ? ?? http://www.openforge.cn/opendotnet/