Apache
Apache软件包的组成
Apache服务器的启动
Apache服务器的配置
Apache服务器的用户认证
用户web目录
虚拟主机
1.Apache简介
WWW(World Wide Web)
HTTP(HyperText Transfer Protocol)
交互式访问
模块化
2.Apache软件包的组成
/etc/httpd/conf/*
主配置文件位置
/etc/rc.d/init.d/httpd
启动脚本
/home/httpd/html
html文档的主目录
/home/httpd/html/manual/*
html格式的帮助文档
/home/httpd/icons/*
用在html网页中的图标文件
/usr/sbin/*
-/usr/sbin/htpasswd
建立和更新apache用户的程序
-/usr/sbin/httpd
http服务器程序
/var/log/httpd/*
日志文件
3.Apache服务器的启动
/etc/rc.d/init.d/httpd start(reload/restart/stop)
使其自动运行
ntsysv
4.Apache服务器的配置
1.配置文件
httpd.conf srm.conf access.conf
2.httpd.conf
ServerType standlone/inetd
服务器的运行方式
Port 80
在standlone方式下监听的端口号
User nobody
进程运行的属主
Group nobody
进程运行的属组
ServerAdmin admin@localhost
管理员信箱
ServerRoot "/home/httpd/"
服务器文件位置
ServerName httpserver
服务器名称
Timeout 300
设置服务器和客户端的连接超时时间
MaxClient 300
允许同时连接的客户数
ProxyRequests on
允许充当proxy
DocumentRoot "/home/httpd/html"
提供服务器文档服务的根目录
UserDir public_html
服务器上用户自己主页所在目录
DirectoryIndex index.html
目录索引文件
AccessFileName .htaccess
在每个目录中包含访问控制信息的文件名
Alias /icons/ "/home/user/icons/"
为不在DocumentRoot之下的文档建立别名
<VirtualHost></VirtualHost>
<Directory></Directory>
3.目录访问权限控制
----
通过修改httpd.conf文件中的Directory项来设置
Ex:
<Directory "/home/httpd/html/aa">
Options Indexes
AllowOverride None
order allow,deny
allow from all
</Directory>
Options指令
--控制一个目录的访问特性
-None:
-All:
-ExecCGI:可以执行cgi脚本
-Indexes:访问一个无索引文件的目录时,返回一个文件 列表
AllowOverride指令
--".htaccess"文件中哪些设置允许覆盖先前的设置
-None:不读取.htaccess
-Limit:覆盖控制主机访问的指令(allow,deny)
-AuthConfig:允许覆盖跟认证有关指令 (AuthType,AuthName)
order指令
控制处理allow和deny指令的顺序
Ex:
order allow,deny
deny from all
allow from host11
allow指令
对于一个目录来说,allow指令设置允许哪些主机访问
-all:所有主机
-域名:eloo.com
-一个完整IP:192.168.0.1
-网络号码/子网掩码:192.168.0.0/255.255.255.0
-网络号码/nnn:192.168.0.0/24
deny指令
对于一个目录来说,allow指令设置禁止哪些主机访问
-all:所有主机
-域名:eloo.com
-一个完整IP:192.168.0.1
-网络号码/子网掩码:192.168.0.0/255.255.255.0
-网络号码/nnn:192.168.0.0/24
5.Apache服务器的用户认证
功能:只有合法的帐号名和密码才能访问到指定目录的内容
1.建立用户数据库
格式:lpeng:BQ5DFS3%#$%
一般放在DocumentRoot以外的地方
#htpasswd -bc /etc/httpd/users user1 1234
2.使用用户数据库
在要保护的目录中建立".htaccess"文件
Ex:
AuthName "会员区"
AuthType Basic
AuthUserFile /etc/httpd/users
require valid-user(requrie user <username1>
注意:也可以建立一个用户组文件,然后在这里指定用户组
vi /etc/httpd/groups
teacher:jacky lpeng
Ex:
AuthName "会员区"
AuthType Basic
AuthGroupFile /etc/httpd/users
require group <group1>
另一种情况:
Ex:
AuthName "会员区"
AuthType Basic
AuthGroupFile /etc/httpd/users
require group <group1>
Allow from
Deny from
satisfy all //同时使用两种,都满足才可
satisfy any //符合一种即可
使用php+mysql数据库来实现用户认证
6.用户Web目录
Apache允许主机上的用户使用特定的目录存放用户自己的主页
http://hostname/~username/ 一种方法
UserDir public_html
注意:此目录必须位于用户主目录下
另种方法
UserDir /home/httpd/*/httpd
7.虚拟主机
基于名字的虚拟主机
<VirtualHost 192.168.103.11>
ServerAdmin
webmaster@host.some_domain.com
DocumentRoot /home/eloo/a
ServerName a.eloo.com
ErrorLog /home/eloo/logs/host.some_domain.com-error_log
CustomLog /home/eloo/logs/host.some_domain.com-access_log common
</VirtualHost>
实验:
1.建立/home/httpd/htmlapachetest目录,并对其进行权限限制,使用户aa可以访问
2.设置自己服务器上的个人主页空间
3.设置本机域名mydomain.com
主目录为/home/httpd/html
再添加一别名为username.mydomain.com
使其访问/home/username/html目录下的内容
posted @
2008-02-18 10:50 华梦行 阅读(151) |
评论 (0) |
编辑 收藏
wget -q -O -
https://rhn.redhat.com/help/new-cert.sh | /bin/bash
posted @
2008-01-31 14:03 华梦行 阅读(176) |
评论 (0) |
编辑 收藏
<?xml version="1.0"?>
<!--
http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="192.168.1.120" />
<allow-access-from domain="ser.wei.com" />
<allow-access-from domain="
www.myjust.com" />
<allow-access-from domain="192.168.1.200" />
<allow-access-from domain="192.168.1.110" />
<allow-access-from domain="192.168.1.109" />
<allow-access-from domain="192.168.1.2" />
</cross-domain-policy>
posted @
2008-01-30 16:44 华梦行 阅读(195) |
评论 (0) |
编辑 收藏
Linux各个挂载点介绍
/bin 存放最常用的命令,此目录下的命令所有用户都有执行的权限
/boot Linux系统引导目录,此目录保存系统启动时的内核文件和内核映像文件及启动时所需的其它文件
/dev 设备文件,保存所有的硬件设备文件,如硬盘设备文件,软驱、光驱设备文件等等
/etc 存放各种服务的配置文件,相当于Windows 2000的winnt目录
/home 各用宿主目录,相当于Windows 2000的“我的文档”
/lib 该目录用来存放系统动态链接共享库,几乎所用的应该程序都会用到该目录下的共享库
/mnt 挂载目录,用来临时挂载别的文件系统或者别的硬件设备(如光驱、软驱)
/proc 此目录信息是在内存中由系统自行产生的,存储了一些当前的进程ID号和CPU、内存的映射等
/sbin 系统管理员命令存放目录
/usr 最大的目录,用户的很多应该程序和文件都存放在此目录下
/usr/X1186 X-Windows目录,存放一些X-Windows的配置文件
/usr/include 系统头文件,存储一些C语言的头文件
/usr/src Linux内核源代码,Linux系统所安装的内核源代码都保存在此
/usr/bin 对/bin目录的一些补充
/usr/sbin 对/sbin目录的一些补充
/var 大多数的日志存储目录和ftp,www服务的匿名访问目录
的根,在Linux工作一段时间后,此目录会比较大,应即时对此目录进行删除
/misc autofs服务的目
/opt 用于存储第三方软件的目录
/tmp 临时文件的目录,用来存放不同程序执行时产生的临时文件
/lost+found 该目录在大多数情况下都是空的,但当实然停电或者非正常关机后,有些文件临时存入在此
/root 管理员的根目录,一般只有管理员才可以访问此目录
|
|
|
posted @
2008-01-30 15:52 华梦行 阅读(562) |
评论 (0) |
编辑 收藏
标题: 急救:硬盘下安装red hat linux 9.0,提示未找到任何驱动!
Device Auto Ok
posted @
2008-01-30 15:45 华梦行 阅读(440) |
评论 (0) |
编辑 收藏
../j_acegi_logout
_acegi_logout 映射是在哪里定义的呢? 各位大侠请不吝赐教
posted @
2008-01-28 19:37 华梦行 阅读(505) |
评论 (2) |
编辑 收藏
项目管理是50 年代后期发展起来的一种计划管理方法,作为一门新兴的管理科学,正日益引起项目建设者的广泛重视,它是一种运用系统科学的原理对工程建设项目进行计划、组织和控制的系统管理方法。随着信息时代的到来,项目管理被广泛地应用各个行业和领域的项目中,并发挥着越来越重要的作用。
但具体到信息技术类型的企业,有关的统计数据显示项目管理实施的效果并不理想。1997 年Garden Research Group 的调查结果显示:在美国,即使借助项目管理,90% 的IT 项目仍然不能在规定的时间和预算内完成。在国内,失败的IT项目也屡见不鲜。在项目管理理论发展的较为成熟的今天,会出现这样的局面至少说明在项目管理理论的实践运用中出现了一些问题。目前,国内的各行各业都开始了大规模的信息化建设,对于这些行业应用软件开发的项目,又该如何通过项目管理来保证项目的顺利推进呢?
按照美国项目管理协会(
PMI)的项目管理论,对项目的管理可以按照启动、规划、执行、控制和收尾这五个过程组来进行,关注的知识领域包括项目范围、进度、成本、质量、人力资源、沟通、风险、采购以及项目的整体管理。但是该项目管理理论是一个框架性的知识体系,且其针对的项目不仅仅是软件开发项目,而且针对项目的规模和大小,项目管理团队应该按照项目的特点对其建议的过程进行取舍,并辅以通用的一些管理和沟通技巧,以下,笔者结合自身的一些行业软件开发项目的管理经验,谈一下在行业应用软件开发中的项目管理的需要特别注意的地方和一些体会。
一、了解行业知识
-站在用户的角度考虑问题
对于大多行业软件项目来说,技术已不是项目成功的瓶颈。面对不同行业各具特色的行业知识,行业软件的开发决非技术可以解决问题的,要想成功地推进项目,就必须转变技术为先的观点,而是要站在用户的角度,看看用户需要的是什么。在行业软件开发中经常碰到的问题是用户后期的需求变更,首先,在项目前期,项目经理应该熟悉行业的背景,包括该行的相关政策、法规;客户信息化的现状、与上级、下级以及同级单位或者其他相关单位之间的业务关系等,为项目做一个明确的定位和边界划分;其次,在需求调研阶段,要学习以行业语言而不是计算机语言和客户对话。如在和客户进行需求调研的时候,如果不能对用户的业务背景、业务流程等知识有一些初步认识,是很难和用户做到深入的沟通的。如果调研的双方不能以相同的“语言”进行交流,又怎么能够真正了解业务的细节呢?对于一些特别复杂的业务,建议需求人员采取实习的方式,和具体的业务人员一同办理,观察业务的细节和工作人员的工作量消耗在什么地方,通过深入的学习和认真思考,将业务知识转化为信息流程。通过这样的工作,可以比较好地把握项目的范围,即使后期有一些变更,也基本能够进行控制;第三,在系统的功能设计和开发阶段,必须以用户的体验和以能够真正减轻用户的工作负担为出发点,而不是一味的考虑技术的先进性。即使系统采用的技术很先进,但如果信息化的结果不能真正减轻用户的工作负担,甚至加重用户的工作量,这样的系统用户肯定是不愿意用的。一些项目经理认为这样做会增加项目的成本,拖延项目的进度。但是如果在项目交付时才发现没有系统不满足需求、或者为适应实际的业务操作需要做大的变动,这种结果对项目的影响则是更为致命的。行业应用软件,应该是行业在先,软件在后,因此一个合格的项目经理,必须首先要理解这个软件的业务应用,并且有意识地在项目组中培养技术和行业相结合的人才,以提高项目组的业务能力。这样才能真正把握好业务需求,掌握业务模型并进行正确的项目开发。
二、积极面对变更
-没有不变的需求
用户需求变更是所有项目团队都会遇到的问题,特别是有些行业的标准不规范或者不健全,使得在项目建设的过程中需求变化不断。事实上,需求变化是项目的常态,现代的项目管理理论认为对于变更应该采取更加主动地方式进行管理。要认识到项目的需求是在一个螺旋的过程中反复修改并不断完善的,需求分析本身就是为了协调开发方与客户之间对项目的认识。无论实现计划得多么周密,随着双方对项目认知的不断深化实践,项目的变更是不可避免的。在上一节的提到的方法有助于减少项目后期的需求变更,项目管理人员也可以采取一些更为主动的方法来管理需求变更。首先,要定期与用户交流系统的情况,例如以原型设计的方式与用户确认需求。很多用户虽然是行业专家,但他们并不清楚心目中的信息系统是以何种方式呈现的。这就需要项目开发人员尽早采取原型设计的方式来引导并确认需求。通过界面设计工具快速地设计出界面原型,使得用户看到具体的“实物”,这样可以使得用户更容易表达其真实的想法。在项目开发过程中,也应该定期将完成的功能以演示或者试用的方式与用户交流,听取用户对界面和功能设计方面的意见,及早发现可能出现的意见分歧,以免在项目后期才发现重大的偏差。不少项目组提交需求报告后就埋头进行系统的设计和开发,等到项目完成后才将系统提交给客户试用,结果造成用户对项目评价不高,或者系统完全不能适合用户当前的需求,甚至会因此影响双方的关系,结果给项目造成难以挽回的损失。其次,对已经发生的变更要认真的面对。记录用户提出的变更需求,并以书面的方式进行记录存档,并以集体决议的方式分析变更可能对项目造成的影响,并做出是否变更的决定,如果有可能的话尽可能邀请客户的项目负责人参与会议过程。根据对项目的影响程度,双方确定变更的内容对加以实施。总之,本着双方协商解决问题的态度以规范的流程处理项目中的变更,大部分的问题都是可以顺利解决的。
三、主动地沟通
-以团队精神做项目
现在项目管理理论非常强调沟通能力对项目管理的重要性,良好的沟通能力是一名优秀的项目经理最重要的能力之一。随着软件规模的发展,以往凭着个人英雄主义的手工作坊形式越来越不适应当前软件项目的开发。在行业应用软件的开发中,通常我们是以一个团队的形式来完成一项任务,在这种群体的活动中沟通是无法避免的。项目经理大约上70%的时间用在各种形式的沟通上。开会、谈判、谈话、做报告是最常见的沟通形式,撰写报告实际上是一种书面沟通的方式,对外各种拜访、约见也都是沟通的表现形式。因此项目经理必须掌握有效的沟通技巧。许多项目经理是由技术人员转型发展而来的,往往以技术的观点看待问题,认为沟通只是浪费时间,又或者因为性格内向腼腆而不愿与客户沟通,这必然会对项目造成影响。因此项目经理要转变观念,积极有效的与客户沟通,解决项目可能存在的问题。在项目推进的过程中还要特别注意和项目组成员之间的沟通。项目常见的效率低下的问题,往往是有了问题后,大家没有沟通或不懂得沟通所引起的。另外,项目执行力差、领导力不强的问题,归根到底,都与沟通欠缺有直接的关系。以项目经理和项目组成员之间的关系为例,项目经理不仅仅应该关注组员个人的工作和绩效、职业规划等职业要素,还应该了解员工的想法、思想动态、日常管理中的问题和员工的意见、抱怨等等非职业要素。这看似与员工的业绩以及项目无关,但在实践过程中往往成为影响员工工作态度和项目结果的关键因素。在面临巨大、忙碌的项目压力时,项目组成员常常产生各种抱怨、动摇,这些都是正常的现象,项目经理应该特别注重员工的生活和思想动态,积极沟通,对出现的问题积极予以协助。通过有效沟通,可以提高项目成员的归属感,加速项目成员之间得磨合,打造一支有战斗力的项目团队。
项目管理方法没有孰优孰劣,关键是根据项目的具体情况和外部环境的特点选择最适合的方法。以科学的项目管理理论为指导并在项目认真实践和探索,并不断吸取教训加以总结,就是项目管理的成功之道。
posted @
2008-01-25 18:00 华梦行 阅读(96) |
评论 (0) |
编辑 收藏
/**********************
* 用户-产品-订单模块
**********************/
/*
表名称: CUSTOMER(客户信息表)
ID (客户编号)
NAME (姓名)
LOGINID (登陆ID)
PASSWD (密码)
EMAIL (EMAIL)
ADDRESS (地址)
STATUS (状态)
*/
create table customer (
id int not null identity,
name varchar(80) not null,
loginid varchar(20) not null,
passwd varchar(255) not null,
email varchar(80) null,
address varchar(80) null,
status varchar(20) null,
constraint pk_customer primary key (id)
);
/*
表名称: CATEGORY(产品类别表)
ID (类别编码)
NAME (类别名)
DESCN (描述)
Primary Key: PK_CATEGORY PRIMARY KEY(ID)
*/
create table category (
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
constraint pk_category primary key (id)
);
/*
表名称: PRODUCT(产品表)
ID (产品编码)
CATEGORY_ID (类别ID)
NAME (产品名称)
DESCN (描述)
INVENTORY (存货)
UNITPRICE (单价)
STATUS (状态)
ATTR1 (自定义属性1)
ATTR2 (自定义属性2)
ATTR3 (自定义属性3)
ATTR4 (自定义属性4)
TYPE (类型)
CREATETIME (创建的日期)
CREATE_USER_ID (创建的操作员)
MODIFYTIME (最后一次修改的日期)
MODIFY_USER_ID (最后一次修改的操作员)
*/
create table product (
id int not null identity,
category_id int not null,
name varchar(80) not null,
descn varchar(255) null,
inventory int null,
unitprice decimal(10,2) null,
status varchar(20) null,
attr1 varchar(255) null,
attr2 varchar(255) null,
attr3 varchar(255) null,
attr4 varchar(255) null,
type varchar(20) default 'product',
createtime date null,
create_user_id int null,
modifytime date null,
modify_user_id int null,
constraint pk_product primary key (id),
constraint fk_product_1 foreign key (category_id)
references category (id),
constraint fk_product_2 foreign key (create_user_id)
references users (id),
constraint fk_product_3 foreign key (modify_user_id)
references users (id)
);
/*
表名称: ORDERS(订单信息表)
ID (订单编码)
CUSTOMER_ID (用户编码)
ORDERDATE (下订日期)
TOTALPRICE (总费用)
ORIGINALPRICE (原价格)
APPLYRULES (所使用的促销规则)
REGION (送货地区)
SHIPADDR (发货地址)
SHIPDATE (发货日期)
STATUS (订单状态)
*/
create table orders (
id int not null identity,
customer_id int not null,
orderdate date not null,
totalprice decimal(10,2) not null,
originalprice decimal(10,2),
applyRules varchar(255) ,
region varchar(255),
shipaddr varchar(80) ,
shipdate date ,
status varchar(2) default '1',
constraint pk_orders primary key (id),
constraint FK_ORDERS_1 foreign key (CUSTOMER_ID) REFERENCES CUSTOMER(ID)
);
/*
表名称: ORDER_ITEM(订单货物表)
ORDER_ID (订单编码)
LINENUM (订单行号)
PRODUCT_ID (产品编码)
QUANTITY (数量)
UNITPRICE (单价)
*/
create table order_item (
order_id int not null,
linenum int not null,
product_id int not null,
quantity int not null,
unitprice decimal(10,2) not null,
constraint pk_orderitem primary key (order_id, linenum),
constraint FK_ITEM_1 foreign key (ORDER_ID) REFERENCES orders(ID),
constraint FK_ITEM_2 foreign key (PRODUCT_ID) REFERENCES PRODUCT(ID)
);
/****************************
* 管理员及安全模块
****************************/
/*
表名称: log4j_log(日志信息)
ID (序号)
LOGINID (登陆ID)
PRIORITY (级别)
LOGDATE (时间)
CLASS (类名)
METHOD (方法名)
MSG (信息)
*/
create table log4j_log(
id int not null identity,
loginid varchar(20) not null,
priority varchar(10) not null,
logdate varchar(21) not null,
class varchar(255) not null,
method varchar(100) null,
msg varchar(255) null,
constraint pk_log4j_msg primary key (id)
);
/*
表名称:change_history(领域对象修改记录)
*/
create table change_history(
id int not null identity,
entitytype varchar(20) not null,
entityid int not null,
changeColumns varchar(255) null,
constraint pk_product primary key (id)
);
/*
表名称: users(用户)
loginid 登陆ID
passwd 密码
name 用户名
email 邮箱
region 管理地区
status 状态
descn 用户描述
*/
create table users(
id int not null identity,
loginid varchar(20) not null,
passwd varchar(255) not null,
name varchar(80) not null,
email varchar(255),
region varchar(255),
status VARCHAR(2) default 1,
descn varchar(255) null,
constraint pk_users primary key (id)
);
/*
表名称: roles(角色)
name 角色名称
descn 角色描述
*/
create table roles(
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
constraint pk_roles primary key (id)
);
/*
表名称: user_role(用户角色表)
user_id 用户ID
role_id 角色ID
*/
create table user_role
(
user_id int not null,
role_id int not null,
constraint pk_user_role primary key (user_id,role_id),
constraint fk_user_role_1 foreign key (user_id) REFERENCES users(ID),
constraint fk_user_role_2 foreign key (role_id) REFERENCES roles(ID)
);
/*
表名称: permissions (权限)
name 权限名称
descn 描述
operation 操作
status 状态
*/
create table permissions
(
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
operation varchar(80) null,
status VARCHAR(2) default '1',
constraint pk_permissons primary key (id)
);
/*
表名称: role_permis(角色权限)
role_id 角色ID
permis_id 权限ID
*/
create table role_permis
(
role_id int not null,
permis_id int not null,
constraint pk_role_permis primary key (role_id,permis_id),
constraint fk_role_role_permis_1 foreign key (role_id) REFERENCES roles(ID),
constraint fk_role_role_permis_2 foreign key (permis_id) REFERENCES permissions(ID)
);
/*
表名称: resources (资源)
name 资源名称(模块名称)
res_type 资源类型
res_string 资源串
descn 资源描述
*/
create table resources
(
id int not null identity,
name varchar(80) not null,
res_type varchar(20) not null,
res_string varchar(255) not null,
descn varchar(255) null,
constraint pk_resources primary key (id)
);
/*
表名称: permis_resc(权限资源)
resource_id 资源ID
operation_id 操作ID
*/
create table permis_resc
(
permis_id int not null,
resc_id int not null,
constraint pk_permis_resc primary key (permis_id,resc_id),
constraint fk_role_permis_resc_1 foreign key (resc_id) REFERENCES resources(ID),
constraint fk_role_permis_resc_2 foreign key (permis_id) REFERENCES permissions(ID)
);
/*
表名称: acl_object_identity(保护的ACLDomain对象列表)
object_identity 受保护的ACL对象的标识符,一般是ClassName + ID
parent_object 该对象关联的父对象
acl_class Acegi用来描述该类的Class,一般用来表示Mark等信息
*/
create table acl_object_identity (
id int not null identity,
object_identity varchar(250) not null,
parent_object integer,
acl_class varchar(250) NOT NULL,
constraint unique_object_identity unique(object_identity),
foreign key (parent_object) REFERENCES acl_object_identity(id)
);
/*
表名称: permis_resc(ACL授权列表)
acl_object_identity 对应acl_object_identity表的id,表示一个Acl保护的对象。
recipient 用户名或角色名
mask 所授权限
*/
create table acl_permission (
id int not null identity,
acl_object_identity integer not null,
recipient varchar(100) NOT NULL,
mask integer not null,
constraint unique_recipient unique(acl_object_identity, recipient),
foreign key (acl_object_identity) REFERENCES acl_object_identity(id)
);
posted @
2008-01-21 20:19 华梦行 阅读(201) |
评论 (0) |
编辑 收藏
ljava -classpath hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
java -classpath hsqldb.jar org.hsqldb.Server -database.0 acl -dbname.0 acl
posted @
2008-01-21 20:00 华梦行 阅读(127) |
评论 (0) |
编辑 收藏
private void bbslogin(String name,String pwd) {
WebContext context = WebContextFactory.get();
Cookie[] cookie1 = context.getHttpServletRequest().getCookies();
if (cookie1 == null) {
Cookie cookie = new Cookie("bbsUser", name);
Cookie cookpwd=new Cookie("bbsPwd",pwd);
cookie.setMaxAge(60*60*2);
cookpwd.setMaxAge(60*60*2);
cookpwd.setPath("/");
cookie.setPath("/");
context.getHttpServletResponse().addCookie(cookie);
} else {
for (int i = 0; i < cookie1.length; i++) {
String vname = cookie1[i].getName();
String value = cookie1[i].getValue();
if (!vname.equals("bbsUser")) {
Cookie cookie = new Cookie("bbsUser", name);
Cookie cookpwd=new Cookie("bbsPwd",pwd);
cookie.setMaxAge(60*60*2);
cookpwd.setMaxAge(60*60*2);
cookie.setPath("/");
cookpwd.setPath("/");
context.getHttpServletResponse().addCookie(cookie);
}
}
}
}
posted @
2008-01-21 15:32 华梦行 阅读(154) |
评论 (0) |
编辑 收藏
<link rel=”icon” href=”/dir/favicon.ico” mce_href=”/dir/favicon.ico” type=”image/x-icon”>
<link rel=”shortcut icon” href=”/dir/favicon.ico” mce_href=”/dir/favicon.ico” type=”image/x-icon”>
posted @
2008-01-19 15:40 华梦行 阅读(154) |
评论 (0) |
编辑 收藏
网上没有找到比较合适的,自己看了看,然后放到项目中实验的一下。
很多人都认为比DBCP优秀。
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="initialPoolSize"><value>10</value></property>
<property name="minPoolSize"><value>5</value></property>
<property name="maxPoolSize"><value>30</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="maxIdleTime"><value>10</value></property>
<property name="maxStatements"><value>0</value></property>
</bean>
以下几个参数是使用的基本配置参数:
initialPoolSize:
Number of Connections a pool will try to acquire upon startup. Should be between minPoolSize and maxPoolSize
连接池初始化时获取的链接数,介于minPoolSize和maxPoolSize之间
minPoolSize:
Minimum number of Connections a pool will maintain at any given time.
最小链接数
maxPoolSize:
Maximum number of Connections a pool will maintain at any given time.
最大连接数
acquireIncrement:
Determines how many connections at a time c3p0 will try to acquire when the pool is exhausted.
在当前连接数耗尽的时候,一次获取的新的连接数
maxIdleTime:
Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.
最大空闲的时间,单位是秒,无用的链接再过时后会被回收
posted @
2008-01-18 19:47 华梦行 阅读(232) |
评论 (0) |
编辑 收藏
ALTER TABLE aUTHORITIES ADD constraint fk_authorities_users foreign key(username) references users(username)
posted @
2008-01-15 12:12 华梦行 阅读(97) |
评论 (0) |
编辑 收藏
摘要: 当前位置: 首页 >> 应用软件 >> 网络相关 >> Acegi安全系统详解
Acegi安全系统详解
作者:
来源:http://blog.csdn.ne...
阅读全文
posted @
2008-01-14 20:19 华梦行 阅读(279) |
评论 (0) |
编辑 收藏
CREATE UNIQUE INDEX IX_mucgroupuser ON mucgroupuser(roomname,username)
在 sqlserver2000中你创建的一些约束都可以在查询分析器中直接看到
posted @
2008-01-14 16:41 华梦行 阅读(166) |
评论 (0) |
编辑 收藏
解决webwork utf-8 乱码问题
起因:使用webwork+spring开发,出现提交数据乱码。
1,首先尝试修改webwork配制文件webwork.properties
webwork.locale=zh_CN
webwork.i18n.encoding=UTF-8
没有解决问题
2,再次尝试加入filter
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
还是没有解决问题。
3,尝试更改提交方式 ,页面上加上 method="post"
问题解决。但是新问题出现,url中出现的中文依然是乱码
更改tomcat server.xml文件,在<Connector port="8080" >中加入URIEncoding="utf-8"问题解决,
但有更好的一种解决方案。就是用useBodyEncodingForURI="true"代替URIEncoding="utf-8"
这样tomcat会根据页面的编码去处理
posted @
2008-01-13 14:49 华梦行 阅读(355) |
评论 (0) |
编辑 收藏
SELECT TOP 5 * FROM im_dh WHERE NOT EXISTS(SELECT * FROM (SELECT TOP 10 PID FROM im_dh order by dhdt desc ) T WHERE T.PID=im_dh.PID) order by dhdt desc
ibatis 中用$来设置动态参数
top $start$
posted @
2008-01-08 18:47 华梦行 阅读(916) |
评论 (0) |
编辑 收藏
添加如下代码:
out.clear();
out = pageContext.pushBody();
posted @
2007-11-05 14:43 华梦行 阅读(406) |
评论 (0) |
编辑 收藏
从网站上看到了有人提起这个框架——Guice,google名下的产物——一个彼Spring快的DI容器,兴趣使然,马上到http://code.google.com/p/google-guice/上去看了看,发现居然是Bob Lee这位大仙的杰作,还犹豫什么,download下来试试!
恩,从哪里试起呢?还是老规矩,碰到新的东西就来验证我们经典的例子——Hello World!
这个东西说是DI,居然没有.xml或者.properties文件,老天它用的是该死的Annotation,很好,要是大家也想尝试的话统统5.0或者以上的干活。安装好环境,开始动手!可是从哪里开始呢?既然说是DI容器,那好,我们先把我们的程序准备好,然后再看它把各个需要的东西怎么Inject。
借鉴一下Spring开发手册里的例子吧,稍微改改(无聊的人不要骂这个程序,因为它太简单,我都想骂!)。既然是要打印,我们先来一个打印的服务接口:
public
interface
PrintService
{
public
void
print(String str);
}
很好,再来一个它的实现:
public
class
PrintServiceImpl
implements
PrintService
{
public
void
print(String str)
{
System.out.print(str);
}
}
然后呢?一个打印客户Client:
public
class
Client
{
private
String str
=
"
Hello world
"
;
private
PrintService service;
void
printString()
{
service.print(str);
}
}
看到了么?这次Inject的不是那个该死的字符串“Hello World”,而是该死的打印服务!好了,Client和我们的打印服务是分开的,我不知道Guice会怎么把打印服务在Client需要的时候Inject进来。不管怎么做,一个test是应该有的:
import
junit.framework.TestCase;
public
class
testClient
extends
TestCase
{
public
void
testPrintString()
{
Client client
=
new
Client();
client.printString();
}
}
好了,试试看,应该是红色的条子。废话,Client在这里根本不知道该死的打印服务在哪里。那么寻找打印服务就是Guice的事情了。
让我们看看Guice是怎么进行Inject的。我们想要Client在使用的时候找到打印服务,那么我们应该在Client需要的时候将其Inject进去,这样的话我们需要写一个类似于setter的东西来建造一个Inject点,那么我们在Client里添加些东西:
import com.google.inject.Inject;
public
class
Client
{
private
String str
=
"
Hello world
"
;
private
PrintService service;
@Inject
void
injectPrintService(PrintService service)
{
this
.service
=
service;
}
void
printString()
{
service.print(str);
}
}
我们写入了一个injectPrintService方法,这个方法可以充当Inject点,然后我们在这个方法上面来一个Annotation——“@Inject”,这就是告诉Guice应该在哪里Inject我们需要的打印服务。
好了,我们下面要做的就是把PrintService和我们的实现动态的绑定起来(接口编程,好主意)。在Guice里,我们需要实现一个叫做Module的接口,Guice将一个binder传递给你的Module,然后你的Module将接口和它的实现绑定起来。让我们来试一下:
import
com.google.inject.Binder;
import
com.google.inject.Module;
public
class
MyModule
implements
Module
{
public
void
configure(Binder binder)
{
binder.bind(PrintService.
class
).to(PrintServiceImpl.
class
);
}
}
在我们需要打印服务的时候,Guice会自动创建一个PrintServiceImpl的实例给我们。OK,接下来就是如何注入的问题了,我们需要在test中实现:
import
junit.framework.TestCase;
import
com.google.inject.
*
;
public
class
testClient
extends
TestCase
{
public
void
testPrintString()
{
MyModule mo
=
new
MyModule();
Injector in
=
Guice.createInjector(mo);
Client client
=
new
Client();
in.injectMembers(client);
client.printString();
}
}
完了!一个全新的Hello world将要被打印出来了。
Guice的工作流程是这样的:
首先将自己创建的Module传给Guice.createInjector(),Guice会为你的Module创建一个binder,你的Module利用这个binder来实现各种绑定,然后在Guice会创建一个Injector出来,我们就可以利用这个Injector来Inject我们的服务了。
Guice将DI这个概念完完全全的诠释了出来,使我们在编写的应用的时候不必去考虑具体的实现在哪里,Guice会为你动态的绑定并且Inject的。很好使的框架,很有意思,以后继续关注!!
posted @
2007-11-03 16:59 华梦行 阅读(108) |
评论 (0) |
编辑 收藏
FileOutputStream fos = new FileOutputStream(logfile.toString(), false);
logger = new PrintStream(fos, true);
logger.println("Arale started at " + new java.util.Date());
posted @
2007-10-31 16:53 华梦行 阅读(154) |
评论 (0) |
编辑 收藏