gdufo

 

修改root用户的密码

 

mysql> update mysql.user set password=PASSWORD('afasdf'where User='root';
mysql
> flush privileges
mysql
> quit

posted @ 2008-07-04 13:06 gdufo| 编辑 收藏

设置Mysql 外部连接

   

mysql> select host, user, password from user;
+-----------+------+------------------+
| host      | user | password         |
+-----------+------+------------------+
| localhost | root | 5819aa890aa5c238 |
| et-erp    | root | 5819aa890aa5c238 |
| localhost |      |                  |
| et-erp    |      |                  |
| %         | root | 5819aa890aa5c238 |
+-----------+------+------------------+

>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| 编辑 收藏

linux,jdk142,axis14,tomcat安装

 

环境:redhat linux 9.0

      先前没有安装过jdk, tomcat, axis,并将三个软件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   --自动解压,生成rpm 安装包

> Do you agree to the above license terms? [yes or no]  y

> rpm -ivh j2sdk-1_4_2_04-linux-i586.rpm 自动安装在目录/usr/java/ j2sdk1.4.2

> cd /usr/java

> mv j2sdk1.4.2  jdk1.4  更改文件夹名称

2.设置环境量

> vi /etc/profile

在里面加入以下环境变量,保存并退出。

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 --更改文件夹与环境变量中的一致

> /usr/local/tomcat/bin/startup.sh –启动服务

如启动成功在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目录copytomcat目录下

>cp -R -f /usr/local/axis/lib/*.jar /usr/local/tomcat/common/lib/ --axis所要的jar文件Copytomcatlib目录下

> cp classes12.jar  /usr/local/tomcat/common/lib/  --Oracle驱动Copy

> cp classes111.jar /usr/local/tomcat/common/lib/   --Oracle驱动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”中填入相关参数

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

点击”save””commit changes”

posted @ 2008-07-04 11:42 gdufo 阅读(340) | 评论 (0)编辑 收藏

linux,apache,mysql,php安装手册

 环境:redhat linux 9.0

      先前没有安装过Apache, Mysql, Php.

一、              安装Apache 1.3

>tar -zxvf apache_1.3.37.tar.gz

>cd apache_1.3.37

修改src/include/httpd.h 增大最大线程数

#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  启动它

#这里我们通过enable-module参数告诉设置脚本,我们需要启动sorewrite模块,so模块是用来提DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。

enable-shared=max 这个参数的作用时编译apache时,把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。

好了安装apache很简单的哦,启动apache看看

然后用iehttp://127.0.0.1 应该能看到熟悉的apache羽毛标志。

 

二、              安装Mysql4.1.18

先查看是否安装了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;

然后重启动

 

以上安装方法不是以源代码编绎安装的,而是通过二进制代码直接实现。

三、              安装PHP (php-4.4.4.tar.gz)

> tar -zxvf php-5.2.0.tar.gz

> cd php-4.4.4

> ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs

如果安装的是apache2.x,就要用到--with-apxs2

>make

>make install

#我这里由于服务器需要用到GD库,所以加了一些支持GD的编译参数 GD直接用了redhat自带的GD库,大家没有安装的话可以从安装盘安装,注意除了安装GD以外,还要安装libjpeglibpng等库文件。另外--with-mysql=/usr/local/mysql指向你安装mysql的路径。--with-apxs指向apacheapxs文件的路径。

注:可能会出现没有产生libphp4.so文件,建议去网站下最新的4.4.4 版本。或找其它的方法。

 

四、              配置

>vi /usr/local/apache/conf/httpd.conf

 在适当位置添加(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 ../php4.4.4/php.ini-dist /usr/local/php/lib/php.ini

>vi /usr/local/php/lib/php.ini

修改php.ini文件
register_globals = On

一些情况下将default_charset = "iso-8859-1"改为default_charset=”GBK”

打开网页默认为GBK编码。

    >/usr/local/apache/bin/apachectl restart 重启

编写测试页:

Test.php

<?php

   Phpinfo();

?>

如在http://hostname/test.php 就可以看到php的相关信息,表明安装成功。

五、

设置Linux自启动(以Apache为例)

方法1:

由于Linux版本的不同:自动启动的shell脚本放置的位置和名称也不相同,在redhat、红旗等版本的Linux中启动脚本放在 /etc/rc.d目录中,名称是:rc.local。而SuSE版本的Linux启动脚本是放在/etc/init.d目录中,名称 boot.local.

例如:apache、mysql自动启动

在红旗、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| 编辑 收藏

tomcat管理界面常用设置 -- 不解压war文件

转:http://blog.csdn.net/cm4ever/archive/2004/10/24/148930.aspx


1. war文件内的WEB-INF/classes目录下的所有class文件
2. war文件内的/WEB-INF/lib目录下的所有jar文件
3. war文件内的/WEB-INF目录下的web.xml文件
4. war文件内的环境配置文件
上述四项中的任一项改变后自动重载。这样就无须手工重新deploy,节省调试时间。

1.登陆管理界面
http://localhost:8080/admin

密码和用户名在你安装的时候设定的,如果忘记(或没有)的话,去改tomcat\conf\tomcat-users.xml,添加admin和 manager两个role,一个用户,该用户的role为admin和manager就可以了,按原有的xml复制修改就可以。

2.设置步骤
  2.1 点击左边框架中Service菜单项左边的小圆,展开列表 
  2.2 点击左边框架中Host (localhost)菜单项,右边框架出现设置页
  2.3 把右边框架中Unpack WARs右边的下拉列表改为false
  2.4 点击右边框架中右上角save按钮 
  2.5 点击顶部框架Commit Changes按钮

注意:要保证文件不是只读的



posted @ 2008-07-02 20:17 gdufo| 编辑 收藏

不能访问Tomcat5.5的admin页面



Tomcat 5可以通过以运行在网页浏览器的配置应用程序非常方便地进行服务器的配置。这个应用程序称为Tomcat Administration Web Application。然而,Tomcat 5.5 以后的binary 核心安装版不再提供Tomcat Administration Web Application。要安装后者,需要单独下载和安装。Tomcat 并没有为Administration Web Application提供一种自动整合的安装程序。本文将讲述安装和配置的详细过程。

第一步,确认你的Tomcat 中是否已安装了Administration Web Application。首先确定Tomcat Service 正在运行。然后在浏览器中,键入 http://localhost:8080/admin,如果看到Tomcat Web Server Administration Tool 的页面,说明Administration Web Application 已安装好了。你可以省点时间,不必读下文了。如果看到的是
Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.
那么这篇文章就算你看对了,就是专门为你写的。

第二步,下载admin package。说实话,很多人居然找不到在哪里下载。这不怪你们。Apache Tomcat 的下载页面的指示不是很清楚,当然技术文档也不甚详尽。但是人家已经给你提供了功能强大的open source 软件,你还能抱怨什么呢?要怪就怪的工夫没下到,功夫不够深。

仔细看,http://tomcat.apache.org/download-55.cgi , 在下载页面的Binary Distributions栏下的第四大项,Administration Web Application 即是。

第三步,当解压下载的Administration Web Application 文件,比如放在c:\tom中,你会发现解压后的文件为 c:\tom\apache-tomcat-5.5.17。 这时键入 http://localhost:8080/admin 去检验admin,会发现Tomcat什么都没有改变。因为解压的admin文件还没有配置到Tomcat 的系统中。下面的步骤告诉你如何将admin文件配置到Tomcat 的服务器中。

第四步,将 c:\tom\apache-tomcat-5.5.17\conf\Catalina\localhost\admin.xml的
admin.xml 文件拷贝到c:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost. 的文件夹中。注意一定要放在正确的路径的文件夹中。

第五步,将c:\tom\apache-tomcat-5.5.17\server\webapps中的admin整个文件夹拷贝到c:\Program Files\Apache SoftwareFoundation\Tomcat5.5\server\webapps 文件夹中。

第六步,用具有编辑功能的notepad等打开 c:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\中的tomcat-users.xml 文件。在</tomcat-user>最后一行之前,加入下列一行
<user username="admin" password="tomcat" roles="admin,manager"/>

注意username/password可以是你喜欢的任意组合,但roles=”admin” 不可随意改动。

第七步,重启Tomcat Server,然后打开http://127.0.0.1:8080/进入manager里面把admin服务启动起来,然后再进入admin模块里,在web浏览器中键入 http://localhost:8080/admin, 这时你如果能看到 Tomcat Server Web Administration Tool 的login界面, 就大功告成。若是还看不到上述页面,可检查浏览器的代理服务器的设定,使之能够接受localhost。

还打不开就用下面的终极绝招!

目录: 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
这样就可以浏览了,不过整个Tomcat都是可以浏览,有点危险。
其他就按你自己的配:
目录:E:\Tomcat5.5\conf\Catalina\localhost\jspweb.xml
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/c:/jspweb/" path="/jspweb">
</Context>
因该和5.0一样了,不过你绝对是浪费5.5的安全特性.....
目录: 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
这样就可以浏览了,不过整个Tomcat都是可以浏览,有点危险。
其他就按你自己的配:
目录:E:\Tomcat5.5\conf\Catalina\localhost\jspweb.xml
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/c:/jspweb/" path="/jspweb">
</Context>
因该和5.0一样了,不过你绝对是浪费5.5的安全特性.....

目录: 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
这样就可以浏览了,不过整个Tomcat都是可以浏览,有点危险。
其他就按你自己的配:
目录:E:\Tomcat5.5\conf\Catalina\localhost\jspweb.xml
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/c:/jspweb/" path="/jspweb">
</Context>
因该和5.0一样了,不过你绝对是浪费5.5的安全特性.....

posted @ 2008-07-02 20:00 gdufo| 编辑 收藏

Struts2 中文计划 翻译

     摘要:   阅读全文

posted @ 2008-07-02 18:06 gdufo| 编辑 收藏

eclipse的tomcatplugin下载地址


http://www.eclipsetotale.com/tomcatPlugin.html#A3

posted @ 2008-07-02 09:30 gdufo| 编辑 收藏

Struts2与Velocity模板

Velocity是一种基于JAVA的模板引擎,开发人员使用简单的模板语言就可以快速开发显示层,它使得显示层与程序代码分离,在早期的Webwork版本中,所有UI标签均使用Velocity模板引擎生成,可以在Struts-core-2.0.8.jar中找到template文件夹,其中的archive文件夹下存放着原有的vl文件!

Struts2中查找vm文件的顺序先查找Web应用程序,再查找类路径。如果你需要使用vm作为显示层,只需要在配置文件中指定resulttype属性为velocity,然后将<param>location属性指定到一个以vm结尾的资源上就可以了!

1.Struts2中的Velocity中文乱码的处理方式:

因为在Velocity-1.4.jar中的org.apache.velocity.runtime.defaults中定义的velocity.properties中定义的input.encoding=ISO8859-1output.encoding=ISO8859-1,通常最好在VM文件中使用%{getText(‘’)}调用国际化资源文件的内容就不会产生乱码。

2.Velocityvm文件必须要经过Action才可以访问,以便被程序解析,不可以直接访问vm文件。

3.vm文件中使用Struts2的标签只需要在原有标签前加#s就可以了,参数之间使用””分隔!

(1.)例如下面是一个表单的定义:

#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中的一个参数的值

#sproperty(“value=#session.information” “default=noValue”)

(3.)下面是访问Action中的属性

${student.name},当然你也可以简单写成$student.name的形式。

4.Velocity的内建变量:

stack---ValueStack,可以使用${stack.findString(‘OGNL表达式’)}取值

action---最近执行的Action,例如${action.getStudent().getName()}或者也可以直接写${action.student.name}

response---HttpServletRequest

request---HttpServletResponse

session---HttpSession

application---ServletContext

base---生成应用的上下文,相当与request.getContextPath()

5.注释语法

(1.)单行注释:##

(2.)多行注释:#* ... ... *#

6.暂停执行

#stop---停止执行后面的模板内容

7.转义字符

Velocity使用 \ 转义字符,例如email被定义为andrew830314@163.com#set($email=’andrew830314@163.com’)),你还想输出$email而不被Velocity解析,那么你可以使用 \$email

8.引入其他文件

#include(“”),如果是JSP或者vm文件将会显示内容,其他文本文件显示文本,二进制会显示乱码,引入多个文件使用 , 间隔,#parse(“”)引入一个本地的vm文件,与#include(“”)不同,#parse(“”)只能引入一个文件,并且#parse(“”)可以访问父模板里的变量。

9.模板代码复用

#macro(代码段名称 $参数1 ... ...)

       ... ...

#end

只要使用#代码段名称($参数1 ... ...)就可以使用这段代码,当然你也可以不使用任何参数

10.判断语句

#if(逻辑表达式)

注意:在Velocity中使用==判断两个变量是否相等,而不是使用equals(“”)方法。

#else

#end

从上面我们还可以总结出,Velocity模板引擎使用#表示一种命令,例如#set是给某个变量设置值,使用$引用变量,使用()表示参数,使用{}表示作用范围。

另外需要注意的时候,Velocity只会按照gettXXX()解析变脸变量,例如student.name实际上找到的student.getName()方法,你可以试着在Action写一个变量而不使用getXXX()方法,看看会不会在vm中取到值,答案是变量会被原样输出。

Velocity使用的都是对象,即使你定义#set ($count=1)也会被包装成Integer使用。

另外,修改vm文件需要重新启动服务器,如果在开发阶段,我们可以设置struts.properties中的struts.devMode=true避免每次重新启动服务器。

最后我们思考一下,如果货币$2.95会被Velocity引擎直接输出,还是去查找2.95这个变量?如果你在思考这个问题,说明你的JAVA基础不过关哦!因为JAVA中的变量不能以数字开头的哦!因此你不必担心货币$2.95会被当作变量解析!另外,如果Velocity引擎未找到变量也会原样输出,例如${student.name}如果未找到会直接原样输出,这也是为什么我们直接访问JSP的时候会看到大量的${}被原样输出。如果变量不存在,你想让它不输出,可以这样写$!{}

posted @ 2008-06-29 19:34 gdufo 阅读(7380) | 评论 (1)编辑 收藏

Struts Menu 祥解

http://blog.csdn.net/phevose/archive/2007/06/02/1635563.aspx

官方英文版向导(http://struts-menu.sourceforge.net/userguide.html

一、从1.X升级到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服务。
5、打开htpp://localhost:8080/struts-menu/

三、把Struts Menu整合到你的应用程序中:
Struts Menu能够被轻易的整合到你的Struts应用程序中,它也可以整合到一个非Struts的应用程序中,但是我不喜欢这样做,所以在此没有提供相应的教程。这里将一步步的带你整合这个标签库。
你需要把struts-menu.jar放到你的WEB-INF/lib目录下。然后使用URI标签声明你的JSP文件中想使用的这个标签库。
如果使用Struts Menu 2.1,你还需要 Jakarta's Standard Tag Library JAR包放入你的WEB-INF/lib目录下。下载地址:http://ibiblio.org/maven/taglibs/jars/standard-1.0.4.jar,这个文件包括例程WAR包文件和二进制发布包。
1、放入struts-menu.jar包到你的应用程序的WEB-INF/lib目录中。
2、在你的struts-config.xml文件中加入plug-in设置。

 <plug-in className="net.sf.navigator.menu.MenuPlugIn">
   
<set-property property="menuConfig"
     value
="/WEB-INF/menu-config.xml"/>
 
</plug-in>


3、你将需要在你的应用程序的/WEB-INF/menu-config.xml文件中定义你的菜单,这里提供一个简单的片断:

 <Menu name="contactMenu" title="Contact" location="?Contact">
   
<Item name="email" title="E-Mail" location="?EMail"/>
   
<Item name="phone" title="Phone" location="?Phone"/>
 
</Menu>


  更多全面的例程,请查看应用程序的web/WEB-INF目录中的menu-config.xml文件,你可以截取一段作为你需要的菜单。完整的属性列表,可以查看MenuBase class's javadocs(http://struts-menu.source......avigator/menu/MenuBase.html)。
4、在你的JSP文件的顶部加入taglib声明:
 

<% at taglib uri="" prefix="menu" %>


5、在你的JSP文件中要放置菜单的位置加入taglib代码:

 <menu:useMenuDisplayer name="TabbedMenu"
   bundle
="org.apache.struts.action.MESSAGE">
   
<menu:displayMenu name="Home"/>
   
<menu:displayMenu name="About"/>
 
</menu:useMenuDisplayer>


属性name="TabbedMenu"被定义在menu-config.xml文件的顶部:

 <Displayer name="TabbedMenu"
type
="net.sf.navigator.displayer.TabbedMenuDisplayer"/>

http://struts-menu.sf.net/tag

(译注:其实到此步即可在你的JSP文件中添加相应的菜单了,只不过是没有结合Velocity。在menu-config.xml文件的头部可以定义多个Displayer,每个Displayer都有name和type属性,name属性与JSP文件中menu:useMenuDisplayer标签的name属性相对应,即表明使用何种样式,具体的样式定义便在type属性中定义,type属性中是一个class。在menu-config.xml文件中的菜单定义中的name属性则与JSP文件中的menu:displayMenu标签的name属性相对应。)

使用定制的Velocity模版实施你的菜单,你需要整合Velocity到你的WEB应用程序中。如果需要这样做的话,请完成下面的步骤:
1、确定你的menu-config.xml文件有“Velocity”的displayer定义:

 <Displayer name="Velocity" 
     type
="net.sf.navigator.displayer.VelocityMenuDisplayer"/>


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”属性指向一个文件(如config="/templates/tabs.html")或者如果tabs.htm在你的WEB-INF/classes目录中的话,则可设config="tabs.html"。

这里提供了一些使用Velocity的displayer例子,可在sample application(http://demo.raibledesigns.com/struts-menu/index.jsp)中查看。它总是在你的菜单需要的时候显示CSS,JavaScript和图像文件。下面有一些在当前的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

所有相关的有用的文件如果你需要的话都可以在下面的站点上下载:
 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的显示/隐藏菜单的信息,请查看FAQs(http://struts-menu.sourceforge.net/faq.html)。

四、在Struts之外使用Struts Menu:
在2.2版中,Menu Repository能够使用MenuContextListener载入:

 <!--
    - Loads the menu-config.xml for struts-menu at startup,
    - by default from "/WEB-INF/menu-config.xml".
    - To override this, add a context-param named "menuConfigLocation"
    - web.xml file.
    
-->
 
<listener>
     
<listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
 
</listener>

 

或者如果你使用Spring,甚至更容易。仅仅需要加入下面的部分到你的applicationContext.xml文件中:

 <bean id="menu" class="net.sf.navigator.menu.MenuLoader">
   
<property name="menuConfig">
     
<value>/WEB-INF/menu-config.xml</value>
   
</property>
 
</bean>
 
<!-- The menuConfig property is an optional attribute.  It is set to
     /WEB-INF/menu-config.xml by default. 
-->


感谢Dan Luputan提供MenuLoader类的源代码。

五、从源文件编译:
要从源文件编译这个项目,执行下面的步骤:
1、下载并安装Maven(http://maven.apache.org/);
2、创建一个环境变量MAVEN_HOME指出你的Maven的安装目录,然后添加$MAVEN_HOME/bin到你的PATH变量中;
3、操纵这个目录你可以扩展源代码,执行“maven.jar”创建target/struts-menu.jar。

要展开struts-menu例程,需要下面的步骤:
1、下载和安装Tomcat;
2、创建一个环境变量CATALINA_HOME指出你的Tomcat的安装目录;
3、执行“maven deploy”把应用程序展开到Tomcat中;
4、打开http://localhost:8080/struts-menu在你喜爱的浏览器中。

如果你喜欢使用Eclipse开发项目,请参考此份开发向导(http://struts-menu.sourceforge.net/devguide.html)。

 

struts-menu2.3做动态菜单

1 web.xml
struts-menu2.3版本不用建立在struts框架之上,但需要struts的jar包
要做的是在web.xml文件中配置一个监听

 

    <context-param>
        
<param-name>menuConfigLocation</param-name>
        
<param-value>/WEB-INF/menu-config.xml</param-value>
    
</context-param>
    
<listener>
        
<listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
    
</listener>


其中context-param是可选的,/WEB-INF/menu-config.xml是struts-menu的默认配置文件的路径,如果要改变文件的名字或路径要改写context-param

2 menu-config.xml

需要配置菜单的显示样式,如下:

 

<?xml version="1.0" encoding="UTF-8" ?>

<MenuConfig>

  
<Displayers>
    
<Displayer   name="DropDown"
                 type
="net.sf.navigator.displayer.DropDownMenuDisplayer"/>
    
<Displayer   name="Simple"
                 type
="net.sf.navigator.displayer.SimpleMenuDisplayer"/>
    
<Displayer   name="CoolMenu"
                 type
="net.sf.navigator.displayer.CoolMenuDisplayer"/>
    
<Displayer   name="CoolMenu4"
                 type
="net.sf.navigator.displayer.CoolMenuDisplayer4"/>
    
<Displayer   name="MenuForm"
                 type
="net.sf.navigator.example.PermissionsFormMenuDisplayer"/>
    
<Displayer   name="ListMenu"
                 type
="net.sf.navigator.displayer.ListMenuDisplayer"/>
    
<Displayer   name="TabbedMenu"
                 type
="net.sf.navigator.displayer.TabbedMenuDisplayer"/>
    
<Displayer   name="Velocity"
                 type
="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
  
</Displayers>

</MenuConfig>


3 dynamicmenu.jsp

menu的数据结构
    MenuRepository:包含了所有的菜单数据,它的里面保存菜单的形式是二维表的形式。一个菜单就是一条记录
    MenuComponent: 代表一个菜单,也就是二维表中的一条记录,父菜单和子菜单在这里区分,如果它的getParent()方法返回为空,那么它就是顶级菜单,它下面的子菜单设置它为父菜单方法:setParent(MenuComponent parent),该菜单的下面还可以有子菜单。
    最后要做的是把所有设置好的菜单项,用repository.addMenu(mc) 方法加入到repository中。那么一个级联菜单就做好了,示例代码:

 

MenuRepository repository=new MenuRepository();
    MenuComponent mc
=new MenuComponent();
    mc.setName(
"myMenu");
    mc.setTitle(
"File");
    MenuComponent copy
=new MenuComponent();
    copy.setTitle(
"copy");
    copy.setParent(mc);
    MenuComponent open
=new MenuComponent();
    
    open.setTitle(
"Open");
    open.setParent(mc);
    MenuComponent close
=new MenuComponent();
    close.setTitle(
"New");
    close.setParent(mc);
    MenuComponent case1 
= new MenuComponent();
    case1.setParent(close);
    case1.setTitle(
"case1");
    repository.addMenu(mc);
    repository.addMenu(open);
    repository.addMenu(close);
    repository.addMenu(copy);

下面是菜单的显示:

 MenuRepository defaultRepository = (MenuRepository)
    application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
    repository.setDisplayers(defaultRepository.getDisplayers());

上面代码的含义:
    取得菜单的显示样式,设置给repository,也就是上面menu-config.xml中设置的八种样式。

    pageContext.setAttribute("net.sf.navigator.menu.MENU_REPOSITORY",repository);
把菜单装入到.jsp文件中,赋值给属性"net.sf.navigator.menu.MENU_REPOSITORY" 然后jsp的menu标签就会从该属性中取得菜单的显示样式和数据

=================
使用Struts Menu实现权限管理


Struts Menu也是Matt Raible的作品,我以前一直在找能够在Java里面指定实现页面上树形菜单和下拉菜单的东西,我去年找到一个JS的东西,可以从XML文件中读取结构,我使用XSLT来生成显示的菜单,后来感觉不灵活,也没有用到项目上,2004年11月开始接触AppFuse,发现里面有个Struts Menu,从例子看起来外观还不错,用起来,发现更不错,可以在配置文件中指定那些角色可以看到当前的链接,如果roles中没有指定的角色进入系统后,则自动隐藏。我在去年的一个小项目用了一下,发现还行,至少不用我把逻辑嵌入到一堆JS里面。

因为今年上半年要对以前的一个系统进行升级,要根据用户或者角色的权限把一些菜单隐藏起来,如果使用Struts Menu的roles的话,则角色是写死在代码里面的,就是"硬编码"(hardcode),而且这里的角色是Application Server上配置的,在Tomcat上配置还算简单,在WebLogic等大型的服务器程序上配置,必须使用他们提供的Console软件,否则,要自己写好几个文件,比较繁琐,而且这些角色是在安装是就指定的,如果用户以后想添加新的角色名字,还要修改应用服务器的配置文件(不管是手工,还是代码处理)。

如果你的系统负责处理权限,如生成用户、角色,还要为角色、用户指定有操作哪些模块的哪些操作,一个系统很可能有几十个或者上百个角色(往极端情况去想,呵呵),那么如果能够动态的控制显示哪些菜单项是我们系统中必须解决的问题,而Struts Menu完全胜任这样的要求,具体实现可以参看Struts Menu的下载文件中的文档,需要重点看的是http://demo.raibledesigns.com/struts-menu/dynamicMenu.jsp(动态构建菜单结构)和http://struts-menu.sourceforge.net/security.html(这篇文章我视而不见,以为没有用处,谢谢倦兔的提醒,^_^)。这两篇文章的用法是独立的,并不一定都要实现,如果你的菜单项是固定的,短期不会有所变动,那么可以写死到配置文件中,然后用第二篇文章中说的那样,写一个类,实现接口PermissionsAdapter,isAllowed方法中传入菜单项的名字,然后决定是否显示该项菜单,

String[] menus = request.getParameterValues("menuNames");

注释:menuNames是从数据库中读出的记录的集合(数组),你也可以用其他机构,

然后放入使用request.setAttribute("menuNames", String[] 变量) 放入request中。

PermissionsAdapter permissions = new SimplePermissionsAdapter(menus);//menus是菜单名字的数组
request.getSession().setAttribute("YourAdapter", permissions);} //"YourAdapter"随便起的名字,

posted @ 2008-06-26 21:16 gdufo| 编辑 收藏

仅列出标题
共19页: First 上一页 11 12 13 14 15 16 17 18 19 下一页 

导航

统计

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Hibernate

友情链接

搜索

最新评论

阅读排行榜

评论排行榜