• 2006-05-13

    编写JSP/PHP+MySQL留言本

    Views: 21223 | No Comments

    前几天想好基本框架,今天“形势与政治”课上把类的结构写好了。相信几天之内就可以做出。我先写JSP版本的,然后再写PHP版本。因为JSP代码相对PHP代码更好控制。

    我将尽量把该留言本做得结构简单,开放,容易复用。然后别人通过使用CSS生成不同的版本。我希望它成为最流行的留言本,无论是用来学习JSP/PHP还是实际应用。

    一条留言的结构是这样:

    Message:
    int id;
    int status;//我定义status越大,权限越开放。
    String time;
    String ip;
    String name;
    String address;
    String msg;
    String reply;
    

    留言本的使用者有游客(Visitor)和管理员(Admin),游客的方法有:

    Visitor:
    Message read(int id);
    Message[] read(int from, int size);
    int write(Message msg);
    

    管理员的方法有:

    Admin:
    Message read(int id);
    Message[] read(int from, int size);
    int write(Message msg);
    int delete(int id);
    int delete(int[] ids);
    int reply(int id, String reply);
    

    虽然Visitor和Admin的方法有重复,不过我还是将它们分得很清晰。如果Admin想管理,那么他就应该到后台。只要在前台,所有人都是Visitor,而不是生成Visitor的前台和Admin的前台。

    Visitor和Admin不直接运行SQL语句,而是调用一个DatabaseManager的方法。

    DatabaseManager:
    Message getMsg(int id);
    Message[] getMsgArray(int from, int size, int minstatus);//这里的status是一个下界
    int getMsgCount(int minstatus);
    boolean saveMsg(Message msg);
    boolean addReply(String reply);
    boolean deleteMsg(int id);
    int deleteMsgOf(int[] ids);
    void close();
    

    每使用DatabaseManager一次,用户必须手动运行close()。这样做而不是在getMsgArray()中关闭数据库的连接是因为创建连接的花销非常大。

    还将建立一个Authority类进行权限管理,目前所知,这个类的功能将很简单,就是基于IP的anti spam。

    Authority:
    int getReadMod(String ip);
    int getWriteMod(String ip);
    

    到这里,一个留言本已经能工作了。为了处理格式化文本和防止恶意留言,增加两个类MsgFilter和MsgFormater。

    MsgFilter:
    String filterName(String name);
    String filterAddress(String addr)
    String filterMsg(String msg);
    String filterReply(String reply);
    String filter(String text);//如果是恶意内容,返回null
    
    MsgFormater:
    String formatMsg(String msg);
    String formatReply(String reply);
    

    因为留言的保存是间歇性的,所以即使我们把MsgFilter和MsgFormater写得复杂也不会影响速度。保存在数据库中的内容都是格式化好的HTML代码,所以浏览留言的速度应该非常快。

    2006-05-13,以后将补充。

    2006-05-15,已经写好,剩下的只有排版了。

    2006-05-17,已经在 http://www.ideawu.net/person/ideabook/ 测试!

    Posted by ideawu at 2006-05-13 21:21:16
  • 2006-05-12

    新的版面pub已经开放测试

    Views: 7855 | No Comments

    源于419的一个提议,为了让我的同样爱好Linux,编程以及其它计算机科学技术的朋友能够在我的网站上发表他们的文章和日志,我决定开放一个新的版面,地址为http://www.ideawu.net/pub/。我还没有想好应该给那个版面作什么样的介绍。写这篇日志是为了记录,同时也是为了先让搜索引擎收录。

    该版面使用 Bo-Blog 作为管理系统。这是一个比较成熟的基于PHP+MySQL的博客系统,在它还是文本博客的时候我就开始使用了。我对它的一个不满意的地方是代码冗余,div嵌套太多。不过,因为我没有时间写一个文章管理系统,就使用它了。

    好吧,过段时间再补充pub版面的介绍到这里。

    Posted by ideawu at 2006-05-12 21:35:37
  • 2006-05-06

    我的网站首页和博客通过XHTML1.0验证了

    Views: 8310 | No Comments

    昨天进行的验证,奇怪,只能通过Opera提交。无论用Firefox还是Opera,直接访问提交都不成功,无法连接。原来Opera提交了缓存中的文件。如果我提交本地文件进行验证,就可以了。也就是说 http://validator.w3.org/ 的通过URL验证功能并不好用。

    过程非常顺利,错误少,更改只花了几分钟。首页只有一个问题,就是img没有加alt。博客问题比较多,除了img没有alt外,有些br没有闭合,input也没有闭合,还有<pre>不能放到<p>里。

    因为博客的文章比较多,我不可能每一个都验证,所以有些页面应该可能通过。

    好了,以后就打上XHTML1.0的标签了。

    Posted by ideawu at 2006-05-06 21:11:29
  • 2006-04-27

    Linux下整合Apache和Tomcat

    Views: 14716 | No Comments

    我期望你使用Debian Linux,不过如果你使用其它的发行版本,这篇文章也同样能帮助你。

    当然,我听说安装Apache和Tomcat的最简单的方法是运行apt-get install apache2 tomcat5 libapache2-mod-jk,不管怎么样,都只是为了得到下面提到的文件。它们的目录可能和我说的不一样,不过,你应该知道使用搜索找到它们,并且能够把我下面提到的路径换为正确的。否则,你应该请人现场帮你弄好,你在一边看着学习。

    说句题外话:你应该学会从一篇文章里找到变量,例如路径,并将它们设为实际的值。作者不可以总是使用和你的机器一样的变量值。

    1. 安装Apache

    以root身份运行apt-get install apache2 就可以安装上Apache了。一般安装在或者/usr/local/apache2/目录下,/usr/lib/apache2目录下。通过这种方法安装的Apache可以自动开机启动。Apache的设置文件是/usr/lib/apache2/conf/httpd.conf。

    然后通过搜索更改设置httpd.conf,使得有 DirectoryIndex index.html index.jsp

    设置虚拟主机

    在/usr/lib/apache2/conf/httpd.conf文件末尾加上
    NameVirtualHost *:80
    <VirtualHost *:80>
        ServerName  www.yourdomain.com
        DocumentRoot /var/webserver
        <Directory /var/webserver>
            Options FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
        LogLevel warn
        CustomLog /usr/lib/apache2/logs/access.log common
        ErrorLog  /usr/lib/apache2/logs/error.log
    </VirtualHost>
    

    在/usr/lib/apache2/conf/httpd.conf文件末尾加上

    这表示你的网站目录在/var/webserver,你必须有这个目录。运行

    /etc/init.d/apache stop  或者 /etc/init.d/apache2 stop
    /etc/init.d/apache start 或者 /etc/init.d/apache2 start
    

    重启Apache。在浏览器里输入localhost,你应该能看到你的/var/webserver目录下的index文件了。

    2. 安装Tomcat

    参看http://www.ideawu.net/tomcatinstall.html 安装Tomcat。注意不要设置Tomcat的监听端口为80,那是留给Apache的。

    3. 整合Apache和Tomcat

    下载mod_jk 复制到/usr/local/apache2/modules/目录下并改名为mod_jk.so。

    建立一个文件/usr/local/apache2/conf/workers.properties,内容为

    workers.tomcat_home=/usr/tomcat5
    workers.java_home=/usr/lib/j2sdk1.4-sun
    ps=/
    worker.list=ajp13
    
    worker.ajp13.type=ajp13
    worker.ajp13.host=localhost
    worker.ajp13.port=8009
    worker.ajp13.cachesize=10
    

    在httpd.conf文件中的“NameVirtualHost *:80”前面加上

    LoadModule jk_module /usr/local/apache2/modules/mod_jk.so
    <IfModule mod_jk.c>
        JkWorkersFile /usr/local/apache2/conf/workers.properties
        JkLogFile /usr/local/apache2/logs/mod_jk.log
        JkLogLevel error
    </IfModule>
    

    在httpd.conf文件中的“</VirtualHost>”前面加上

    JkMount /*.jsp ajp13
    <Location "/WEB-INF/">
        Order allow,deny
        deny from all
    </Location>
    

    好了,重启Tomcat再重启Apache

    Posted by ideawu at 2006-04-27 19:52:53
  • 2006-04-26

    学习使用CSS进行网页布局

    Views: 8378 | No Comments

    前几天更改首页,一边参考(或者说模仿)欧美的网站,一边更改代码。做出来之后感觉比以前进步多了。不过,首页与我所喜欢的网页相比,显得空洞不丰满。这可能是我缺少图像素材的原因,主要是经验的问题。自己的经验是不可替代的。

    开始我的页面底部有一个表格进行布局,因为我不知道如何使用一个层水平撑大。后来发现使用float和width:100%就可以了。我这一次首页改动主要有下面的几点经验总结:

    大量使用列表

    列表是一种清晰而优美的表示形式。而且可以通过定义列表图标,hover动作使得列表看起来有动态。列表的地位可以通过查看欧美优秀网站的源码可以看出。

    适当地使用绝对定位

    开始我做页面顶部的header的时候,因为header高度固定经常使header内的层溢出。后来发现header是独立的和确定的,和其它的页面元素没有定位关系,所以对内层使用position:absolute,从而轻易解决了问题。

    大胆使用前景或者背景图像

    如果不使用图像,页面将显得空洞。有时候可以使用一张大图作为整个页面或者某个大的区域的背景,就能收到很好的效果。不过,图像的衔接必须自然,不要用得哗众取宠。这需要学习和天生的感觉。

    浏览器差异和网页标准的问题

    如果你不知道什么样的代码符合标准,那么至少让你的代码能同时在Firefox和IE上正常显示。有时候标准的代码也不能让页面同时在这两个浏览器上正常显示。不过我建议你在安装有Web Developer插件的Firefox里调试CSS,然后在到IE下做结尾修改。

    当然,你不能忽略Opera,Sofari,Konqueror等浏览器用户的感情。当他们向你反映页面问题的时候,你必须改正。因为网络的问题,我无法提交我的网页进行验证。不过我知道我的网页在Firefox和IE上都正常显示。

    Posted by ideawu at 2006-04-26 15:43:52
  • 2006-03-29

    网上讨论:PHP的书为什么变少了?

    Views: 10411 | 1 Comment

    最近在CSDN社区看到有讨论“PHP书籍竟然从书店撤柜了!?”.

    有不少观点。

    一类说PHP快要被淘汰了,所以PHP的书卖不出去。所以书店把这些书撤了。

    但是大部分的人还是认为PHP上手太简单,所以不需要书籍。网上资源多,而且PHP的手册(有中文版)又非常有用。

    一位叫“Gdj”的网友竟然说:“asp更简单。不过由于学asp的很多人连怎么关闭window窗口都不知道。所以asp需要书。”

    Posted by ideawu at 2006-03-29 16:58:25
|<<<202122232425262728>>>| 26/28 Pages, 163 Results.