修改root用戶的密碼



posted @ 2008-07-04 13:06 gdufo| 編輯 收藏
posted @ 2008-07-04 13:06 gdufo| 編輯 收藏
mysql> select host, user, password from user;
+-----------+------+------------------+
| host | user | password |
+-----------+------+------------------+
| localhost | root | 5819aa890aa
| et-erp | root | 5819aa890aa
| localhost | | |
| et-erp | | |
| % | root | 5819aa890aa
+-----------+------+------------------+
>INSERT INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES ('192.192.192.192', 'new_user', PASSWORD( 'new_user_password' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
>flush privileges;posted @ 2008-07-04 13:04 gdufo| 編輯 收藏
環(huán)境:redhat linux 9.0
先前沒有安裝過jdk, tomcat, axis,并將三個(gè)軟件copy到/usr/local目錄下
一、 安裝jdk1.4.2
1.安裝
> chmod +x j2sdk-1_4_2_04-linux-i586-rpm.bin
> ./j2sdk-1_4_2_04-linux-i586-rpm.bin --自動(dòng)解壓,生成rpm 安裝包
> Do you agree to the above license terms? [yes or no] y
> rpm -ivh j2sdk-1_4_2_04-linux-i586.rpm –自動(dòng)安裝在目錄/usr/java/ j2sdk1.4.2
> cd /usr/java
> mv j2sdk1.4.2 jdk1.4 –更改文件夾名稱
2.設(shè)置環(huán)境量
> vi /etc/profile
在里面加入以下環(huán)境變量,保存并退出。
export JAVA_HOME=/usr/java/ jdk1.4
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/classes12.jar:$JAVA_HOME/lib/classes111.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
export CATALINA_HOME=/usr/local/tomcat
二、 安裝apache-tomcat-4.1.34.
> cd /usr/local
> tar –zxvf apache-tomcat-4.1.34.tar.gz
> mv apache-tomcat-4.1.34 tomcat --更改文件夾與環(huán)境變量中的一致
> /usr/local/tomcat/bin/startup.sh –啟動(dòng)服務(wù)
如啟動(dòng)成功在IE中輸入: http://10.110.4.66:8080,查看是否可以看到歡迎界面,如不能,則查看8080端口是否打開
三、 安裝axis-bin-1_4.tar.gz
1.安裝axis
> cd /usr/local
> tar –zxvf axis-bin-1_4.tar.gz
>cp -R -f /usr/local/axis-1_4/webapps/axis /usr/local/tomcat/webapps –將axis目錄copy以tomcat目錄下
>cp -R -f /usr/local/axis/lib/*.jar /usr/local/tomcat/common/lib/ --axis所要的jar文件Copy到tomcat的lib目錄下
> cp classes12.jar /usr/local/tomcat/common/lib/ --將Oracle驅(qū)動(dòng)Copy
> cp classes111.jar /usr/local/tomcat/common/lib/ --將Oracle驅(qū)動(dòng)Copy
在IE中輸入http://10.110.2.192:8080/axis/happyaxis.jsp 查看是否有問題
2.配置axis
a. 在tomcat的 tomcat-users.xml增加管理員用戶
<role rolename="manager"/>
<role rolename="admin"/>
<user username="gdufo" password="gdufo" roles="admin,manager"/>
b.重啟tomcat
c.配置連接池
登陸http://10.110.4.66:8080/admin/login.jsp 用戶名:gdufo 密碼:gdufo
在菜單樹中選擇tomcat server/Host(local host)/Context(/axis)/Resource/DataSource 中選擇”create a new datasource”中填入相關(guān)參數(shù)
JNDI Name: dbc/axis
Data Source URL: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.110.1.3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD)(SERVER=DEDICATED)))
JDBC Driver Class: oracle.jdbc.driver.OracleDriver
User Name: name
Password:xxxx
Max. Active Connections: 20
Max. Idle Connections:2
Max. Wait for Connection:5000
點(diǎn)擊”save”和”commit changes”
posted @ 2008-07-04 11:42 gdufo 閱讀(348) | 評(píng)論 (0) | 編輯 收藏
先前沒有安裝過Apache, Mysql, Php.
一、 安裝Apache 1.3
>tar -zxvf apache_
>cd apache_
修改src/include/httpd.h 增大最大線程數(shù)
#define HARD_SERVER_LIMIT 256
改成
#define HARD_SERVER_LIMIT 2560
>./configure --prefix=/usr/local/apache --enable-module=so --enable-module=rewrite --enable-shared=max
>make
>make install
>/usr/local/apache/bin/apachectl start 啟動(dòng)它
#這里我們通過enable-module參數(shù)告訴設(shè)置腳本,我們需要啟動(dòng)so和rewrite模塊,so模塊是用來提DSO支持的apache核心模塊,而rewrite模塊則是用意實(shí)現(xiàn)地址重寫的模塊,由于rewrite模塊需要DBM支持,如果在初次安裝時(shí)沒有編譯進(jìn)apache,以后需要用到時(shí)需要重新編譯整個(gè)apache才可以實(shí)現(xiàn)。為此除非你可以確定以后不會(huì)用到rewrite模塊,否則還是建議你在第一次編譯的時(shí)候把rewrite模塊編譯好。
enable-shared=max 這個(gè)參數(shù)的作用時(shí)編譯apache時(shí),把除了so以外的所有apache的標(biāo)準(zhǔn)模塊都編譯成DSO模塊。而不是編譯進(jìn)apache核心內(nèi)。
好了安裝apache很簡單的哦,啟動(dòng)apache看看
然后用ie看http://127.0.0.1 應(yīng)該能看到熟悉的apache羽毛標(biāo)志。
二、 安裝Mysql
先查看是否安裝了mysql (>rpm –q mysql),如果安裝了就別再安裝
>tar –zxvf mysql
>groupadd mysql
>useradd -g mysql mysql
>cd /usr/local
>ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
>cd mysql
>scripts/mysql_install_db --user=mysql
>chown -R root .
>chown -R mysql data
>chgrp -R mysql .
>bin/mysqld_safe --user=mysql &
>回車
>cd bin
>./mysql
這樣就可以了。
修改密碼:
Mysql> update mysql.user set password=PASSWORD('wxbwer') where User='root';
Mysql> flush privileges;
然后重啟動(dòng)
以上安裝方法不是以源代碼編繹安裝的,而是通過二進(jìn)制代碼直接實(shí)現(xiàn)。
三、 安裝PHP (php-
> tar -zxvf php-
> cd php-
> ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs
如果安裝的是apache2.x,就要用到--with-apxs2
>make
>make install
#我這里由于服務(wù)器需要用到GD庫,所以加了一些支持GD的編譯參數(shù) ,GD直接用了redhat自帶的GD庫,大家沒有安裝的話可以從安裝盤安裝,注意除了安裝GD以外,還要安裝libjpeg,libpng等庫文件。另外--with-mysql=/usr/local/mysql指向你安裝mysql的路徑。--with-apxs指向apache的apxs文件的路徑。
注:可能會(huì)出現(xiàn)沒有產(chǎn)生libphp4.so文件,建議去網(wǎng)站下最新的
四、 配置
>vi /usr/local/apache/conf/httpd.conf
在適當(dāng)位置添加(DocumentRoot的下一行就行了)
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
在DirectoryIndex后面添加index.php
>cp ../php
>vi /usr/local/php/lib/php.ini
修改php.ini文件
register_globals = On
一些情況下將default_charset = "iso-8859-1"改為default_charset=”GBK”
打開網(wǎng)頁默認(rèn)為GBK編碼。
>/usr/local/apache/bin/apachectl restart 重啟
編寫測試頁:
Test.php
<?php
Phpinfo();
?>
如在http://hostname/test.php 就可以看到php的相關(guān)信息,表明安裝成功。
五、
方法1: 由于Linux版本的不同:自動(dòng)啟動(dòng)的shell腳本放置的位置和名稱也不相同,在redhat、紅旗等版本的Linux中啟動(dòng)腳本放在 /etc/rc.d目錄中,名稱是:rc.local。而SuSE版本的Linux啟動(dòng)腳本是放在/etc/init.d目錄中,名稱 boot.local. 例如:apache、mysql自動(dòng)啟動(dòng) 在紅旗、radhat等Linux中如下 #cd /etc/rc.d #vi rc.local 在rc.local加入: /usr/local/apache/bin/apachectl start /usr/local/mysql/bin/mysqld_safe --user=mysql & 在SuSE中如下 #cd /etc/init.d #vi boot.local 在rc.local加入: /usr/local/apache/bin/apachectl start /usr/local/mysql/bin/mysqld_safe --user=mysql &
posted @ 2008-07-04 11:39 gdufo| 編輯 收藏
當(dāng)
1. war文件內(nèi)的WEB-INF/classes目錄下的所有class文件
2. war文件內(nèi)的/WEB-INF/lib目錄下的所有jar文件
3. war文件內(nèi)的/WEB-INF目錄下的web.xml文件
4. war文件內(nèi)的環(huán)境配置文件
上述四項(xiàng)中的任一項(xiàng)改變后自動(dòng)重載。這樣就無須手工重新deploy,節(jié)省調(diào)試時(shí)間。
1.登陸管理界面
http://localhost:8080/admin
密碼和用戶名在你安裝的時(shí)候設(shè)定的,如果忘記(或沒有)的話,去改tomcat\conf\tomcat-users.xml,添加admin和 manager兩個(gè)role,一個(gè)用戶,該用戶的role為admin和manager就可以了,按原有的xml復(fù)制修改就可以。
2.設(shè)置步驟
2.1 點(diǎn)擊左邊框架中Service菜單項(xiàng)左邊的小圓,展開列表
2.2 點(diǎn)擊左邊框架中Host (localhost)菜單項(xiàng),右邊框架出現(xiàn)設(shè)置頁
2.3 把右邊框架中Unpack WARs右邊的下拉列表改為false
2.4 點(diǎn)擊右邊框架中右上角save按鈕
2.5 點(diǎn)擊頂部框架Commit Changes按鈕
注意:要保證文件不是只讀的
posted @ 2008-07-02 20:17 gdufo| 編輯 收藏
還打不開就用下面的終極絕招!
目錄: E:\Tomcat5.5\conf\web.xml
<!-- listings Should directory listings be produced if there -->
<!-- is no welcome file in this directory? [false] -->
<!-- WARNING: Listings for directories with many -->
<!-- entries can be slow and may consume -->
<!-- significant proportions of server resources. -->
<!-- -->
.....
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
......
false --> true
這樣就可以瀏覽了,不過整個(gè)Tomcat都是可以瀏覽,有點(diǎn)危險(xiǎn)。
其他就按你自己的配:
目錄:E:\Tomcat5.5\conf\Catalina\localhost\jspweb.xml
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/c:/jspweb/" path="/jspweb">
</Context>
因該和5.0一樣了,不過你絕對(duì)是浪費(fèi)5.5的安全特性.....
posted @ 2008-07-02 20:00 gdufo| 編輯 收藏
posted @ 2008-07-02 09:30 gdufo| 編輯 收藏
Velocity是一種基于JAVA的模板引擎,開發(fā)人員使用簡單的模板語言就可以快速開發(fā)顯示層,它使得顯示層與程序代碼分離,在早期的Webwork版本中,所有UI標(biāo)簽均使用Velocity模板引擎生成,可以在Struts-core-2.0.8.jar中找到template文件夾,其中的archive文件夾下存放著原有的vl文件!
在Struts2中查找vm文件的順序先查找Web應(yīng)用程序,再查找類路徑。如果你需要使用vm作為顯示層,只需要在配置文件中指定result的type屬性為velocity,然后將<param>的location屬性指定到一個(gè)以vm結(jié)尾的資源上就可以了!
1.Struts2中的Velocity中文亂碼的處理方式:
因?yàn)樵?/span>Velocity-1.4.jar中的org.apache.velocity.runtime.defaults中定義的velocity.properties中定義的input.encoding=ISO8859-1,output.encoding=ISO8859-1,通常最好在VM文件中使用%{getText(‘’)}調(diào)用國際化資源文件的內(nèi)容就不會(huì)產(chǎn)生亂碼。
2.Velocity的vm文件必須要經(jīng)過Action才可以訪問,以便被程序解析,不可以直接訪問vm文件。
3.在vm文件中使用Struts2的標(biāo)簽只需要在原有標(biāo)簽前加#s就可以了,參數(shù)之間使用””分隔!
(1.)例如下面是一個(gè)表單的定義:
#sform(“action=Student” namespace=”/ilkj/student”)
#stextfield(“label=%{getText(‘student.label.name’)}” “name=student.name”)
#spassword(“label=%{getText(‘student.label.password’)} ” name=student.age”)
#ssubmit(“value=getText(‘globale.label.submit’)”)
#end
(2.)下面是取出session中的一個(gè)參數(shù)的值
#sproperty(“value=#session.information” “default=noValue”)
(3.)下面是訪問Action中的屬性
${student.name},當(dāng)然你也可以簡單寫成$student.name的形式。
4.Velocity的內(nèi)建變量:
stack---ValueStack,可以使用${stack.findString(‘OGNL表達(dá)式’)}取值
action---最近執(zhí)行的Action,例如${action.getStudent().getName()}或者也可以直接寫${action.student.name}
response---HttpServletRequest
request---HttpServletResponse
session---HttpSession
application---ServletContext
base---生成應(yīng)用的上下文,相當(dāng)與request.getContextPath()
5.注釋語法
(1.)單行注釋:##
(2.)多行注釋:#* ... ... *#
6.暫停執(zhí)行
#stop---停止執(zhí)行后面的模板內(nèi)容
7.轉(zhuǎn)義字符
Velocity使用 \ 轉(zhuǎn)義字符,例如email被定義為andrew830314@163.com(#set($email=’andrew830314@163.com’)),你還想輸出$email而不被Velocity解析,那么你可以使用 \$email。
8.引入其他文件
#include(“”),如果是JSP或者vm文件將會(huì)顯示內(nèi)容,其他文本文件顯示文本,二進(jìn)制會(huì)顯示亂碼,引入多個(gè)文件使用 , 間隔,#parse(“”)引入一個(gè)本地的vm文件,與#include(“”)不同,#parse(“”)只能引入一個(gè)文件,并且#parse(“”)可以訪問父模板里的變量。
9.模板代碼復(fù)用
#macro(代碼段名稱 $參數(shù)1 ... ...)
... ...
#end
只要使用#代碼段名稱($參數(shù)1 ... ...)就可以使用這段代碼,當(dāng)然你也可以不使用任何參數(shù)
10.判斷語句
#if(邏輯表達(dá)式)
注意:在Velocity中使用==判斷兩個(gè)變量是否相等,而不是使用equals(“”)方法。
#else
#end
從上面我們還可以總結(jié)出,Velocity模板引擎使用#表示一種命令,例如#set是給某個(gè)變量設(shè)置值,使用$引用變量,使用()表示參數(shù),使用{}表示作用范圍。
另外需要注意的時(shí)候,Velocity只會(huì)按照gettXXX()解析變臉變量,例如student.name實(shí)際上找到的student.getName()方法,你可以試著在Action寫一個(gè)變量而不使用getXXX()方法,看看會(huì)不會(huì)在vm中取到值,答案是變量會(huì)被原樣輸出。
Velocity使用的都是對(duì)象,即使你定義#set ($count=1)也會(huì)被包裝成Integer使用。
另外,修改vm文件需要重新啟動(dòng)服務(wù)器,如果在開發(fā)階段,我們可以設(shè)置struts.properties中的struts.devMode=true避免每次重新啟動(dòng)服務(wù)器。
最后我們思考一下,如果貨幣$2.95會(huì)被Velocity引擎直接輸出,還是去查找2.95這個(gè)變量?如果你在思考這個(gè)問題,說明你的JAVA基礎(chǔ)不過關(guān)哦!因?yàn)?/span>JAVA中的變量不能以數(shù)字開頭的哦!因此你不必?fù)?dān)心貨幣$2.95會(huì)被當(dāng)作變量解析!另外,如果Velocity引擎未找到變量也會(huì)原樣輸出,例如${student.name}如果未找到會(huì)直接原樣輸出,這也是為什么我們直接訪問JSP的時(shí)候會(huì)看到大量的${}被原樣輸出。如果變量不存在,你想讓它不輸出,可以這樣寫$!{}
posted @ 2008-06-29 19:34 gdufo 閱讀(7389) | 評(píng)論 (1) | 編輯 收藏
一、從1.X升級(jí)到2.X需要做以下事情:
1、改變你的taglib聲明中的URI。
<% at taglib uri="" prefix="menu" %>
2、改變<plug-in>,使用新的包名"net.sf.navigator." 。
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
3、改變你的menu-config.xml文件,使用新的包名"net.sf.navigator." 。
<Displayer name="Simple"
type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>http://struts-menu.sf.net/tag
二、快速開始:
1、下載最新的struts-menu版本;
2、解包到本地目錄;
3、下載Tomcat或者其它Servlet容器;
4、把struts-menu.war包放入Tomcat安裝目錄的wabapps目錄下,并重啟Tomcat服務(wù)。
5、打開htpp://localhost:8080/struts-menu/
三、把Struts Menu整合到你的應(yīng)用程序中:
Struts Menu能夠被輕易的整合到你的Struts應(yīng)用程序中,它也可以整合到一個(gè)非Struts的應(yīng)用程序中,但是我不喜歡這樣做,所以在此沒有提供相應(yīng)的教程。這里將一步步的帶你整合這個(gè)標(biāo)簽庫。
你需要把struts-menu.jar放到你的WEB-INF/lib目錄下。然后使用URI標(biāo)簽聲明你的JSP文件中想使用的這個(gè)標(biāo)簽庫。
如果使用Struts Menu 2.1,你還需要 Jakarta's Standard Tag Library JAR包放入你的WEB-INF/lib目錄下。下載地址:http://ibiblio.org/maven/taglibs/jars/standard-1.0.4.jar,這個(gè)文件包括例程WAR包文件和二進(jìn)制發(fā)布包。
1、放入struts-menu.jar包到你的應(yīng)用程序的WEB-INF/lib目錄中。
2、在你的struts-config.xml文件中加入plug-in設(shè)置。
3、你將需要在你的應(yīng)用程序的/WEB-INF/menu-config.xml文件中定義你的菜單,這里提供一個(gè)簡單的片斷:
更多全面的例程,請(qǐng)查看應(yīng)用程序的web/WEB-INF目錄中的menu-config.xml文件,你可以截取一段作為你需要的菜單。完整的屬性列表,可以查看MenuBase class's javadocs(http://struts-menu.source......avigator/menu/MenuBase.html)。
4、在你的JSP文件的頂部加入taglib聲明:
5、在你的JSP文件中要放置菜單的位置加入taglib代碼:
屬性name="TabbedMenu"被定義在menu-config.xml文件的頂部:
(譯注:其實(shí)到此步即可在你的JSP文件中添加相應(yīng)的菜單了,只不過是沒有結(jié)合Velocity。在menu-config.xml文件的頭部可以定義多個(gè)Displayer,每個(gè)Displayer都有name和type屬性,name屬性與JSP文件中menu:useMenuDisplayer標(biāo)簽的name屬性相對(duì)應(yīng),即表明使用何種樣式,具體的樣式定義便在type屬性中定義,type屬性中是一個(gè)class。在menu-config.xml文件中的菜單定義中的name屬性則與JSP文件中的menu:displayMenu標(biāo)簽的name屬性相對(duì)應(yīng)。)
使用定制的Velocity模版實(shí)施你的菜單,你需要整合Velocity到你的WEB應(yīng)用程序中。如果需要這樣做的話,請(qǐng)完成下面的步驟:
1、確定你的menu-config.xml文件有“Velocity”的displayer定義:
2、加入Velocity的JARs包到你的WEB-INF/lib目錄中,下載velocity-1.4-rc1.jar(http://www.ibiblio.org/ma......y/jars/velocity-1.4-rc1.jar)和velocity-tools-view-1.0.jar(http://www.ibiblio.org/ma......velocity-tools-view-1.0.jar)。
3、加入globalMacros.vm(http://cvs.sourceforge.net/viewcvs.py/*checkout*/struts-menu/navigator/web/WEB-INF/classes/globalMacros.vm?content-type=text%2Fplain&rev=1.1(右鍵另存為))到你的WEB-INF/lib目錄中。
4、改變你的JSP文件中displayer的值為“Velocity”,“config”屬性指向一個(gè)文件(如config="/templates/tabs.html")或者如果tabs.htm在你的WEB-INF/classes目錄中的話,則可設(shè)config="tabs.html"。
這里提供了一些使用Velocity的displayer例子,可在sample application(http://demo.raibledesigns.com/struts-menu/index.jsp)中查看。它總是在你的菜單需要的時(shí)候顯示CSS,JavaScript和圖像文件。下面有一些在當(dāng)前的Struts Menu中用到的Velocity模版的例子的鏈接:
CoolMenus: Demo(http://demo.raibledesigns......menu/velocity-coolmenu4.jsp),
Template(http://struts-menu.sourceforge.net/templates/coolmenus.html)
NiceTabs: Demo, Template
Tabs: Demo, Template
XTree: Demo, Template
所有相關(guān)的有用的文件如果你需要的話都可以在下面的站點(diǎn)上下載:
Images (http://struts-menu.sourceforge.net/menu-images/)
Stylesheets (http://struts-menu.sourceforge.net/styles/)
Scripts (http://struts-menu.sourceforge.net/scripts/)
Templates (http://struts-menu.sourceforge.net/templates/)
更多的基于roles的顯示/隱藏菜單的信息,請(qǐng)查看FAQs(http://struts-menu.sourceforge.net/faq.html)。
四、在Struts之外使用Struts Menu:
在2.2版中,Menu Repository能夠使用MenuContextListener載入:
或者如果你使用Spring,甚至更容易。僅僅需要加入下面的部分到你的applicationContext.xml文件中:
感謝Dan Luputan提供MenuLoader類的源代碼。
五、從源文件編譯:
要從源文件編譯這個(gè)項(xiàng)目,執(zhí)行下面的步驟:
1、下載并安裝Maven(http://maven.apache.org/);
2、創(chuàng)建一個(gè)環(huán)境變量MAVEN_HOME指出你的Maven的安裝目錄,然后添加$MAVEN_HOME/bin到你的PATH變量中;
3、操縱這個(gè)目錄你可以擴(kuò)展源代碼,執(zhí)行“maven.jar”創(chuàng)建target/struts-menu.jar。
要展開struts-menu例程,需要下面的步驟:
1、下載和安裝Tomcat;
2、創(chuàng)建一個(gè)環(huán)境變量CATALINA_HOME指出你的Tomcat的安裝目錄;
3、執(zhí)行“maven deploy”把應(yīng)用程序展開到Tomcat中;
4、打開http://localhost:8080/struts-menu在你喜愛的瀏覽器中。
如果你喜歡使用Eclipse開發(fā)項(xiàng)目,請(qǐng)參考此份開發(fā)向?qū)В?a >http://struts-menu.sourceforge.net/devguide.html)。
struts-menu2.3做動(dòng)態(tài)菜單
1 web.xml
struts-menu2.3版本不用建立在struts框架之上,但需要struts的jar包
要做的是在web.xml文件中配置一個(gè)監(jiān)聽
其中context-param是可選的,/WEB-INF/menu-config.xml是struts-menu的默認(rèn)配置文件的路徑,如果要改變文件的名字或路徑要改寫context-param
2 menu-config.xml
需要配置菜單的顯示樣式,如下:
3 dynamicmenu.jsp
menu的數(shù)據(jù)結(jié)構(gòu)
MenuRepository:包含了所有的菜單數(shù)據(jù),它的里面保存菜單的形式是二維表的形式。一個(gè)菜單就是一條記錄
MenuComponent: 代表一個(gè)菜單,也就是二維表中的一條記錄,父菜單和子菜單在這里區(qū)分,如果它的getParent()方法返回為空,那么它就是頂級(jí)菜單,它下面的子菜單設(shè)置它為父菜單方法:setParent(MenuComponent parent),該菜單的下面還可以有子菜單。
最后要做的是把所有設(shè)置好的菜單項(xiàng),用repository.addMenu(mc) 方法加入到repository中。那么一個(gè)級(jí)聯(lián)菜單就做好了,示例代碼:
下面是菜單的顯示:
上面代碼的含義:
取得菜單的顯示樣式,設(shè)置給repository,也就是上面menu-config.xml中設(shè)置的八種樣式。
pageContext.setAttribute("net.sf.navigator.menu.MENU_REPOSITORY",repository);
把菜單裝入到.jsp文件中,賦值給屬性"net.sf.navigator.menu.MENU_REPOSITORY" 然后jsp的menu標(biāo)簽就會(huì)從該屬性中取得菜單的顯示樣式和數(shù)據(jù)
=================
使用Struts Menu實(shí)現(xiàn)權(quán)限管理
Struts Menu也是Matt Raible的作品,我以前一直在找能夠在Java里面指定實(shí)現(xiàn)頁面上樹形菜單和下拉菜單的東西,我去年找到一個(gè)JS的東西,可以從XML文件中讀取結(jié)構(gòu),我使用XSLT來生成顯示的菜單,后來感覺不靈活,也沒有用到項(xiàng)目上,2004年11月開始接觸AppFuse,發(fā)現(xiàn)里面有個(gè)Struts Menu,從例子看起來外觀還不錯(cuò),用起來,發(fā)現(xiàn)更不錯(cuò),可以在配置文件中指定那些角色可以看到當(dāng)前的鏈接,如果roles中沒有指定的角色進(jìn)入系統(tǒng)后,則自動(dòng)隱藏。我在去年的一個(gè)小項(xiàng)目用了一下,發(fā)現(xiàn)還行,至少不用我把邏輯嵌入到一堆JS里面。
因?yàn)榻衲晟习肽暌獙?duì)以前的一個(gè)系統(tǒng)進(jìn)行升級(jí),要根據(jù)用戶或者角色的權(quán)限把一些菜單隱藏起來,如果使用Struts Menu的roles的話,則角色是寫死在代碼里面的,就是"硬編碼"(hardcode),而且這里的角色是Application Server上配置的,在Tomcat上配置還算簡單,在WebLogic等大型的服務(wù)器程序上配置,必須使用他們提供的Console軟件,否則,要自己寫好幾個(gè)文件,比較繁瑣,而且這些角色是在安裝是就指定的,如果用戶以后想添加新的角色名字,還要修改應(yīng)用服務(wù)器的配置文件(不管是手工,還是代碼處理)。
如果你的系統(tǒng)負(fù)責(zé)處理權(quán)限,如生成用戶、角色,還要為角色、用戶指定有操作哪些模塊的哪些操作,一個(gè)系統(tǒng)很可能有幾十個(gè)或者上百個(gè)角色(往極端情況去想,呵呵),那么如果能夠動(dòng)態(tài)的控制顯示哪些菜單項(xiàng)是我們系統(tǒng)中必須解決的問題,而Struts Menu完全勝任這樣的要求,具體實(shí)現(xiàn)可以參看Struts Menu的下載文件中的文檔,需要重點(diǎn)看的是http://demo.raibledesigns.com/struts-menu/dynamicMenu.jsp(動(dòng)態(tài)構(gòu)建菜單結(jié)構(gòu))和http://struts-menu.sourceforge.net/security.html(這篇文章我視而不見,以為沒有用處,謝謝倦兔的提醒,^_^)。這兩篇文章的用法是獨(dú)立的,并不一定都要實(shí)現(xiàn),如果你的菜單項(xiàng)是固定的,短期不會(huì)有所變動(dòng),那么可以寫死到配置文件中,然后用第二篇文章中說的那樣,寫一個(gè)類,實(shí)現(xiàn)接口PermissionsAdapter,isAllowed方法中傳入菜單項(xiàng)的名字,然后決定是否顯示該項(xiàng)菜單,
String[] menus = request.getParameterValues("menuNames");
注釋:menuNames是從數(shù)據(jù)庫中讀出的記錄的集合(數(shù)組),你也可以用其他機(jī)構(gòu),
然后放入使用request.setAttribute("menuNames", String[] 變量) 放入request中。
PermissionsAdapter permissions = new SimplePermissionsAdapter(menus);//menus是菜單名字的數(shù)組
request.getSession().setAttribute("YourAdapter", permissions);} //"YourAdapter"隨便起的名字,
posted @ 2008-06-26 21:16 gdufo| 編輯 收藏