1. 程式人生 > >Java Web專案開發簡易流程

Java Web專案開發簡易流程

未整合任何框架開發流程

1、設計資料庫、資料表
2、建立動態Web工程(生成web.xml)
3、建立包model
A、根據表建立實體類->hibernate.cfg.xml
4、建立dao
A、根據系統功能,設計方法
6、建立dao.impl
B、實現對應的dao介面->配置相應的applicationContext.xml、web.xml
7、建立service
A、根據功能設計方法(80%跟dao類似)->配置相應的applicationContext.xml、web.xml
8、建立service.impl
A、例項化dao實現類,通過dao介面呼叫方法 ->dao直接呼叫方法不用例項化
9、可選(建議)
建立包test
A、編寫靜態方法,測試service中方法
10、系統加入設定編碼filter
11、實現功能
A、建立JSP頁面(位置已經無所謂啦)
B、建立頁面對應Action,重寫doGet方法,轉發該JSP頁面 —>struts進行設計—>struts.xml
C、設計該JSP頁面
D、如果該頁面需要展示資料,修改doGet方法,讀取資料,放入request中
E、使用JSTL+EL表示式,展示資料
F、如果該JSP頁面需要處理,重寫doPost方法,然後跳轉到某個Action或轉發某個JSP頁面 —>struts進行設計—>struts.xml
12、系統加入許可權filter

使用S2SH整合框架後開發流程

1、資料庫設計:根據需求設計相應的資料庫、資料表。(資料表結構由hibernate實體類自動匯出)
2、建立動態Web工程(生成web.xml)
3、建立包model
A、根據表建立實體類
B、對實體類進行Hibernate配置
a、@Entity:標誌為一個實體類
@Table(name = “class”):標誌這是一個表
@ID:在主鍵的get方法上面加
@GeneratedValue:標誌主鍵自增長
b、配置不同實體類之間的關係對映(具體內容見部落格下方:”關係對映:一對多“):如
@OneToMany(mappedBy = “engineer”)
或者@ManyToOne
@JoinColumn(name = “studentId”)
C、資料庫與Hibernate:
a、拷入Hibernate的jar包。
b、修改“spring_hibernate_transaction.xml”中的內容:
<property name="annotatedClasses">
<list>
<!-- 列出全部的標有hibernate註解的PO類 -->
<value>com.ifly.online_repair.model.AdminInfo</value>
<value>com.ifly.online_repair.model.CommentInfo</value>
<value>com.ifly.online_repair.model.EngineerInfo</value>
<value>com.ifly.online_repair.model.NewsInfo</value>
<value>com.ifly.online_repair.model.StudentInfo</value>
</list>
</property>


c、修改”jdbc.properties“中關於資料庫的基本資訊。
d、修改”applicationContext.xml“:讓Hibernate實體類與資料庫中表對應。
applicationContext.xml中的內容:

    <import resource="spring_hibernate_transaction.xml" />//這個是上面要求修改的內容
    <!-- 自動搜尋指定包及其子包下的所有Bean類 -->
    <context:component-scan base-package="com.ifly.online_repair"
/>
//這條語句是spring框架掃描所有的類中需要注入的資訊

ps:”ehcache.xml“為Hibernate中二級快取需要的配置檔案。
4、建立dao
A、根據系統功能,設計方法
5、建立dao.impl
A、a、在DaoImpl的類上加上:@Repository("adminDao"),代表這個類的簡稱,在需要例項化的類上加上:@Resource(name = "上面簡稱")
b、 private SessionFactory sessionFactory;,生成set方法,在上面加上@Resource(name = "sessionFactory")
B、在具體的方法中使用session:

Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(adminInfo);
session.getTransaction().commit();
`

ps:注意導包
C、測試時使用: 不能直接例項化,要使用spring進行例項化。

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
AdminDao adminDao =  ac.getBean("adminDao", AdminDao.class);//第一個引數:實現類的註解名稱,第二個引數:實現類的型別
adminDao.addAdmin(adminInfo);

6、建立service
A、根據功能設計方法(80%跟dao類似)
7、建立service.impl
A、類內部定義dao類中的變數(不用例項化,使用spring進行注入)。
B、生成變數的set方法,上面使用註解:@Resource(name="commentDao")
C、在該類的上面加上:@Service("commentService")
8、可選(建議)
建立包test
A、編寫靜態方法,測試service中方法。
ps:例項化應該用spring來進行例項化,測試應該使用上面測試dao層方法是的例項化。

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
AdminDao adminDao =  ac.getBean("adminDao", AdminDao.class);//第一個引數:實現類的註解名稱,第二個引數:實現類的型別
adminDao.addAdmin(adminInfo);

9、系統加入設定編碼filter
10、實現功能
A、建立JSP頁面(位置已經無所謂啦,沒有內容的jsp頁面)
B、建立頁面對應Action:使用Struts2來管理
a、拷jar包
b、”web.xml“中配置
c、建立Action類:類的上方加上

@Scope("prototype")
@Controller("myNewsAction")  

對於Action類中的變數:

private CommentInfo commentInfo;
private NewsService newsService;

@Resource(name = "newsService")
public void setNewsService(NewsService newsService) {
    this.newsService = newsService;
    }
@Resource(name = "commentService")
public void setCommentService(CommentService commentService) {
    this.commentService = commentService;
    }

使用spring框架來對其進行管理(例項化),生成set方法,在上面使用@Resource(name = "commentService")
d、拷入”struts.xml“到src中,修改其中內容:

    <package name="index" namespace="/" extends="struts-default">
        <action name="index" class="com.ifly.bbs.struts.action.NewsAction"
            method="index">
            <result name="index">/WEB-INF/views/index.jsp</result>
        </action>
    </package>

ps:預設的方法為:execute()方法,但是在“method=”“”屬性中指定方法是,就會執行特定的方法。
C、設計該JSP頁面
D、如果該頁面需要展示資料,在Action中獲取資料
E、使用JSTL+EL表示式,展示資料
F、如果該JSP頁面需要處理,在Action中處理,然後跳轉
11、許可權filter使用:核心為攔截器的框架。

關係對映:一對多:

(1)、根據表結構寫出對應的類,包括主鍵、外來鍵、所有屬性
(2)、在“多”的類中,加“一”的物件(注意:切記將外來鍵註釋)
在“一”的類中,加“多”的Set結合,同時例項化
(3)、在“多”的類中,在get物件方法上 :
@ManyToOne
@JoinColumn(name=”userId”) // userId:外來鍵,上面所註釋的那行
(4)、在“一”的類中,在get集合方法上:
@OneToMany(mappedBy=”user”) // user:自己在“多”類中定義的屬性名字