项目小结

来源:互联网 发布:c 和java工资相差多少 编辑:程序博客网 时间:2024/04/30 15:40

最近一个多月,都在忙项目,现在有点时间,赶紧查漏补缺,记下一些关键点:


1.关于项目首页/入口的问题

一个资讯类的ss2h项目中,比如一个学校的官网。我们最想看到的是首页,那么首页的数据哪来的?我要的是从数据库中取出来的数据,不是写死在静态页面的。除了首页外,我们其他的页面跳转是经过一个Action的,在Action中取出数据带给下一个页面。问题是:首页是一个项目的最先开始,它的前面并没有一个Action,那么他的数据怎么来?

有人说用ajax/jquery在onload函数发送请求给后台,获取数据。这样思路行的通,问题时当数据过大时,会造成打开页面时有一瞬间的白屏,效果不是很理想。

这里,我在百度找到一张解决方法:让首页也经过一个Action

先来看看我们页面的结构:


页面一般都全放在WEB-INF中(防盗链),我们可以在index.jsp中设置一个跳转:<jsp:forward page="xxxxxxxx.action"></jsp:forward>

还要再web.xml插入:<dispatcher>REQUEST</dispatcher>
                                     <dispatcher>FORWARD</dispatcher>     不然会报错,在struts的过滤其中,完整如下:


<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

这样就可以在Action取数据带给首页,也不会出现页面白屏


2.linux配置tomcat 7.0.62的问题


(1)这里以opensuse版本的linux为例,当你把一个tomcat传输进linux并安装好后,启动往往会报错,在tomcat目录下:./startup.sh  会有很多提示,什么没有权限。因为tomcat的所有文件在linux下是默认只读的,这个时候我们会想到 chmod 755 .......。于是,我改了startup.sh的权限,可是还是启动不了。因为好多相关联的文件都是只读的,于是,我推到放tomcat的目录,直接:chmod -R 777* tomcat       (tomcat是你的tomcat存放的目录名) 问题就解决了。再./startup.sh就可以启动了

(2)我们的项目是通过在tomcat发布war文件而发布的,所以,我们主要一个tomcat的用户,tomcat7 的配置用户与tomcat6有区别:先使用vi编辑器编辑tomcat/conf/tomcat-users.xml,在</tomcat-users>上面加上:


<role rolename="manager-gui"/>
  <role rolename="managet-status"/>
  <role rolename="manager-jmv"/>
  <role rolename="manager"/>
 <role rolename="admin"/>
 <role rolename="admin-gui"/>
<user username="admin" password="admin" roles="admin,manager,manager-gui,manager-status,manager-jmv,admin-gui"/>
六个用户,最好都不要少
然后在bin目录下:./shutdown.sh     ./startup.sh  即可生效

(3)防火墙允许tomcat端口被访问


名令行修改配置防火墙试了n次,也没成功。/etc/sysconfig 目录下没有iptables 文件,好在有图形化界面,在一个叫:YasT 的工具,傻瓜式的使用,自己增加一个防火墙允许的端口即可


3.mysql数据库表的设计


因为hibernate的级联操作可以省下很多力,所以在设计表的时候喜欢加外键。比如有一个业务,是关于评论回复的,对一片文章评论,对新闻评论,对图片评论,对视频评论,而文章,图片,新闻,视频 各是一张表,一开始我是这样建表的:

create table comment(
    id int(11) not null primary key auto_increment,
    comment_uid int not null,//谁评论
    parcommentId int,//父评论Id
    content varchar(512) not null,//评论内容
    comment_time datetime not null,//评论时间
    blogid int not null,//被文章评论的表的Id

   newid int not null,//被新闻评论的表的Id

   photoid int not null,//被图片评论的表的Id

    vedioid int not null,//被视频评论的表的Id
    isGet int not null default 0,//是否接收到回复
    foreign key (comment_uid) references user(id),

  foreign key (blogid ) references blog(id),

  foreign key (newid ) references new(id), 

 foreign key (photoid ) references photo(id),  

foreign key (vedioid ) references vedio(id)
);

但是这样会造成数据冗余,数据库开销太大,于是,变成了下面的设计


create table comment(
    id int(11) not null primary key auto_increment,
    comment_uid int not null,//谁评论
    parcommentId int,//父评论Id
    content varchar(512) not null,//评论内容
    comment_time datetime not null,//评论时间
    commentItem int not null,//被评论的表的Id
    isGet int not null default 0,//是否接收到回复
    commentType char(5) not null,//类型
    foreign key (comment_uid) references user(id)
);

类型是表示评论是属于哪个表的,是新闻还是视频...被评论表的id是该类型表的id,这种结构可以减少数据开销,虽然快了,可是就没那么方便了。



0 0
原创粉丝点击