开发一个JSP博客引擎 之一,开始你的后端

开发一个JSP博客引擎 之一,开始你的后端 

                                                                      Original Author: 马金泽
本文旨在为J2EE的初学者提供一个学习JSP的途径,使刚开始接触JSP的开发人员对Struts2,Hibernate有一个(非常简单和基础的)印象,转载不限,不过请保持本文完整。万分感谢!
您应具备的软件环境:NetBeans 6.8+或Eclipse 3.2+;
Tomcat 6.X (可使用集成在您的开发工具中的Tomcat);
MySQL 5.X 或MS SQL server 2000+及其他同级别数据库;
Power Designer 12+(可选);
您应具备的基本知识:对Hibernate,有初步的了解,了解Java编程。
首先,是数据库设计,没有什么博客引擎是不需要数据库的,但是我们只是实现博客引擎的基本功能,所以只做基本的设计,我们采用Power Designer来进行数据库的设计:
moz-screenshot
这样可以迅速的生成SQL脚本。
/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2010/8/27 10:11:09                           */
/*==============================================================*/
drop table if exists Blog;
drop table if exists User;
/*==============================================================*/
/* Table: Blog                                                  */
/*==============================================================*/
create table Blog
(
   UserEmail            varchar(40),
   Title                varchar(40),
   BlogText             text,
   BuildID              varchar(40) not null,
   primary key (BuildID)
);
/*==============================================================*/
/* Table: User                                                  */
/*==============================================================*/
create table User
(
   Email                varchar(40) not null,
   Password             int,
   primary key (Email)
);
产生的SQL脚本如下:
好了,现在可以关闭您的Power Designer了,如果您不习惯使用这样的工具,您也可以直接使用生成的SQL脚本。
现在,打开您的IDE,现在主流的开发工具都非常出色,比如Eclipse,NetBeans,简单起见,我们使用NetBeans。
打开您的NetBeans,新建一个名为BlogPlay的Java WEB项目,然后在框架选项中选择 Hibernate 如下:
数 据库推荐使用免费且开源的MySQL作为我们的数据库平台,单击完成,新建一个 包,com.youwebsitename.BlogPlay.Entity,方便起见,我们的包名定义 为:com.deepfounder.BlogPlay.Entity 。接下来,打开您的MySQL Command Line Client,创建一个名为blogplay的新数据库:
Create database blogplay;然后,在NetBeans IDE 中的 服务 ->数据库 中打开这个blogplay,运行我们刚刚生成的数据库脚本,然后右键我们建立的com.deepfounder.BlogPlay.Entity,选择 从数据库生成实体类:
这样,我们可以自动生成我们需要的实体:

 

<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package  com.deepfounder.BlogPlay.Entity;

import  java.io.Serializable;
import  javax.persistence.Basic;
import  javax.persistence.Column;
import  javax.persistence.Entity;
import  javax.persistence.Id;
import  javax.persistence.Lob;
import  javax.persistence.NamedQueries;
import  javax.persistence.NamedQuery;
import  javax.persistence.Table;

/**
*
@author  Andy
*/
@Entity
@Table(name 
=   " blog " )
@NamedQueries({
    @NamedQuery(name 
=   " Blog.findAll " , query  =   " SELECT b FROM Blog b " ),
    @NamedQuery(name 
=   " Blog.findByUserEmail " , query  =   " SELECT b FROM Blog b WHERE b.userEmail = :userEmail " ),
    @NamedQuery(name 
=   " Blog.findByTitle " , query  =   " SELECT b FROM Blog b WHERE b.title = :title " ),
    @NamedQuery(name 
=   " Blog.findByBuildID " , query  =   " SELECT b FROM Blog b WHERE b.buildID = :buildID " )})
public   class  Blog  implements  Serializable {
    
private   static   final   long  serialVersionUID  =   1L ;
    @Column(name 
=   " UserEmail " )
    
private  String userEmail;
    @Column(name 
=   " Title " )
    
private  String title;
    @Lob
    @Column(name 
=   " BlogText " )
    
private  String blogText;
    @Id
    @Basic(optional 
=   false )
    @Column(name 
=   " BuildID " )
    
private  String buildID;

    
public  Blog() {
    }

    
public  Blog(String buildID) {
        
this .buildID  =  buildID;
    }

    
public  String getUserEmail() {
        
return  userEmail;
    }

    
public   void  setUserEmail(String userEmail) {
        
this .userEmail  =  userEmail;
    }

    
public  String getTitle() {
        
return  title;
    }

    
public   void  setTitle(String title) {
        
this .title  =  title;
    }

    
public  String getBlogText() {
        
return  blogText;
    }

    
public   void  setBlogText(String blogText) {
        
this .blogText  =  blogText;
    }

    
public  String getBuildID() {
        
return  buildID;
    }

    
public   void  setBuildID(String buildID) {
        
this .buildID  =  buildID;
    }

    @Override
    
public   int  hashCode() {
        
int  hash  =   0 ;
        hash 
+=  (buildID  !=   null   ?  buildID.hashCode() :  0 );
        
return  hash;
    }

    @Override
    
public   boolean  equals(Object object) {
        
//  TODO: Warning - this method won't work in the case the id fields are not set
         if  ( ! (object  instanceof  Blog)) {
            
return   false ;
        }
        Blog other 
=  (Blog) object;
        
if  (( this .buildID  ==   null   &&  other.buildID  !=   null ||  ( this .buildID  !=   null   &&   ! this .buildID.equals(other.buildID))) {
            
return   false ;
        }
        
return   true ;
    }

    @Override
    
public  String toString() {
        
return   " com.deepfounder.BlogPlay.Entity.Blog[buildID= "   +  buildID  +   " ] " ;
    }

 

 

 

 

User:

 

<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package  com.deepfounder.BlogPlay.Entity;

import  java.io.Serializable;
import  javax.persistence.Basic;
import  javax.persistence.Column;
import  javax.persistence.Entity;
import  javax.persistence.Id;
import  javax.persistence.NamedQueries;
import  javax.persistence.NamedQuery;
import  javax.persistence.Table;

/**
*
@author  Andy
*/
@Entity
@Table(name 
=   " user " )
@NamedQueries({
    @NamedQuery(name 
=   " User.findAll " , query  =   " SELECT u FROM User u " ),
    @NamedQuery(name 
=   " User.findByEmail " , query  =   " SELECT u FROM User u WHERE u.email = :email " ),
    @NamedQuery(name 
=   " User.findByPassword " , query  =   " SELECT u FROM User u WHERE u.password = :password " )})
public   class  User  implements  Serializable {
    
private   static   final   long  serialVersionUID  =   1L ;
    @Id
    @Basic(optional 
=   false )
    @Column(name 
=   " Email " )
    
private  String email;
    @Column(name 
=   " Password " )
    
private  Integer password;

    
public  User() {
    }

    
public  User(String email) {
        
this .email  =  email;
    }

    
public  String getEmail() {
        
return  email;
    }

    
public   void  setEmail(String email) {
        
this .email  =  email;
    }

    
public  Integer getPassword() {
        
return  password;
    }

    
public   void  setPassword(Integer password) {
        
this .password  =  password;
    }

    @Override
    
public   int  hashCode() {
        
int  hash  =   0 ;
        hash 
+=  (email  !=   null   ?  email.hashCode() :  0 );
        
return  hash;
    }

    @Override
    
public   boolean  equals(Object object) {
        
//  TODO: Warning - this method won't work in the case the id fields are not set
         if  ( ! (object  instanceof  User)) {
            
return   false ;
        }
        User other 
=  (User) object;
        
if  (( this .email  ==   null   &&  other.email  !=   null ||  ( this .email  !=   null   &&   ! this .email.equals(other.email))) {
            
return   false ;
        }
        
return   true ;
    }

    @Override
    
public  String toString() {
        
return   " com.deepfounder.BlogPlay.Entity.User[email= "   +  email  +   " ] " ;
    }

 


好 了,现在,我们给我们的JSP Application添加一个Struts2应用 如果您是第一次接触Struts2,也不要担心,,非常简单,首先,您需要了解一点XML方面的知识,不过不用很多,Struts2的核心之一,是一个被 称为” struts.xml”配置文件,这个文件保存在您的类目录的根目录下,默认是在 src目录下,或者“src\java”目录下,该配置文件约定了什么应该由struts来处理,您需要在您的web.xml 中做出相应的配置,配置如下:
Struts.xml的内容如下:

<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> <? xml version="1.0" encoding="UTF-8"  ?>
<! DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
< struts >
    
< constant  name ="struts.devMode"  value ="true"   /> <!--  标记是否为开发模式  -->
    
< package  name ="User"  namespace ="/User"  extends ="struts-default" >
        
< action  name ="AddBlog"  class ="com.deepfounder.BlogPlay.Action.AddBlog" >
            
< result  name ="success" >
                /admin.jsp
            
</ result >
        
</ action >
    
</ package >
</ struts >

 

 

Web.xml 文件的配置如下(按需修改即可):

<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> < filter >
        
< fliter-name > struts2 </ filter-name >
        
< filter-class > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </ filter-class >
    
</ filter >
    
< filter-mapping >
        
< filter-name > struts2 </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >

 


与此同时,您还需要在您的lib目录下添加与Struts2相关的jar文件,现在我们只需要非常基本的文件,您应该导入的文件包括:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
好了,也许您没有注意,不过您已经在不经意间完成了Struts2和Hibernate框架的搭建,这会让我们接下来的工作将会非常轻松的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值