圖書管理系統(tǒng)
一個(gè)簡(jiǎn)單圖書管理系統(tǒng)的代碼學(xué)習(xí)逊桦,其中運(yùn)用了IO流技術(shù)眨猎,集合,多線程强经,繼承接口等技術(shù)完成了圖書信息睡陪,圖書業(yè)務(wù),工廠業(yè)務(wù)夕凝,權(quán)限管理宝穗,主界面等。該系統(tǒng)采用mvc框架進(jìn)行編寫码秉,通過定義不同類執(zhí)行不同功能逮矛,形成了業(yè)務(wù)分明的執(zhí)行代碼。
IO流部分代碼編寫
//通用的保存對(duì)象的方法
//要寫入文件的序列化對(duì)象-object
//文件路徑? ? ? ? ? ? ? ? ? ? ? ? ? -filePath
public static void SaveObject(Object object,String filePath) {
try (
FileOutputStream fout=new FileOutputStream(filePath,false);
ObjectOutputStream out=new ObjectOutputStream(fout);
) {
out.writeObject(object);
}catch (IOException e) {
e.printStackTrace();
}
}
//從文件中讀取對(duì)象-通用方法
// filePath
public static Object ReadObject(String filePath) {
try(
? FileInputStream fin=new FileInputStream(filePath);
? ObjectInputStream in=new ObjectInputStream(fin);
)
{
return in.readObject();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
Spring模塊
學(xué)習(xí)的Spring 知識(shí)具體代碼變換:
? java原先實(shí)現(xiàn)方法:
public class Student {
private int stuNo;
private String stuName;
private int stuAge;
public int getStuNo() {
return stuNo;
}
public void setStuNo(int stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getStuAge() {
return stuAge;
}
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.stuName+","+this.stuAge+","+this.stuNo;
}
}
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setStuNo(1);
student.setStuName("zs");
student.setStuAge(23);
System.out.println(student);
}
}
Spring 實(shí)現(xiàn)方法:
通過Spring環(huán)境搭建转砖,STS工具须鼎,導(dǎo)入需要的jar包
配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="org.lanqiao.entity.Student">
? ? <property name="stuNo" value="1"></property>
? ? <property name="stuName" value="Ls"></property>
? ? <property name="stuAge" value="24"></property>
</bean>
</beans>
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//Spring上下文對(duì)象:conext
ApplicationContext conext = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student=(Student)conext.getBean("student");
System.out.println(student);
}
}
? ? SpringMVC框架理解
為什么要使用SpringMVC?
很多應(yīng)用程序的問題在于處理業(yè)務(wù)數(shù)據(jù)的對(duì)象和顯示業(yè)務(wù)數(shù)據(jù)的視圖之間存在緊密耦合府蔗,通常晋控,更新業(yè)務(wù)對(duì)象的命令都是從視圖本身發(fā)起的,使視圖對(duì)任何業(yè)務(wù)對(duì)象更改都有高度敏感性姓赤。而且赡译,當(dāng)多個(gè)視圖依賴于同一個(gè)業(yè)務(wù)對(duì)象時(shí)是沒有靈活性的。
SpringMVC是一種基于Java不铆,實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式蝌焚,請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想誓斥,將Web層進(jìn)行職責(zé)解耦只洒。基于請(qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型劳坑,框架的目的就是幫助我們簡(jiǎn)化開發(fā)毕谴,SpringMVC也是要簡(jiǎn)化我們?nèi)粘eb開發(fā)。
MVC設(shè)計(jì)模式的任務(wù)是將包含業(yè)務(wù)數(shù)據(jù)的模塊與顯示模塊的視圖解耦距芬。這是怎樣發(fā)生的涝开?在模型和視圖之間引入重定向?qū)涌梢越鉀Q問題。此重定向?qū)邮强刂破髅镅ǎ刂破鲗⒔邮照?qǐng)求忠寻,執(zhí)行更新模型的操作,然后通知視圖關(guān)于模型更改的消息存和。
SpringMVC架構(gòu)
SpringMVC是Spring的一部分
操作流程:
(1)首先瀏覽器發(fā)送請(qǐng)求——>DispatcherServlet奕剃,前端控制器收到請(qǐng)求后自己不進(jìn)行處理衷旅,而是委托給其他的解析器進(jìn)行處理,作為統(tǒng)一訪問點(diǎn)纵朋,進(jìn)行全局的流程控制柿顶;
(2)DispatcherServlet——>HandlerMapping,處理器映射器將會(huì)把請(qǐng)求映射為HandlerExecutionChain對(duì)象(包含一個(gè)Handler處理器對(duì)象操软、多個(gè)HandlerInterceptor攔截器)對(duì)象嘁锯;
(3)DispatcherServlet——>HandlerAdapter,處理器適配器將會(huì)把處理器包裝為適配器聂薪,從而支持多種類型的處理器家乘,即適配器設(shè)計(jì)模式的應(yīng)用,從而很容易支持很多類型的處理器藏澳;
(4)HandlerAdapter——>調(diào)用處理器相應(yīng)功能處理方法仁锯,并返回一個(gè)ModelAndView對(duì)象(包含模型數(shù)據(jù)、邏輯視圖名)翔悠;
(5)ModelAndView對(duì)象(Model部分是業(yè)務(wù)對(duì)象返回的模型數(shù)據(jù)业崖,View部分為邏輯視圖名)——> ViewResolver, 視圖解析器將把邏輯視圖名解析為具體的View蓄愁;
(6)View——>渲染双炕,View會(huì)根據(jù)傳進(jìn)來的Model模型數(shù)據(jù)進(jìn)行渲染,此處的Model實(shí)際是一個(gè)Map數(shù)據(jù)結(jié)構(gòu)撮抓;
(7)返回控制權(quán)給DispatcherServlet妇斤,由DispatcherServlet返回響應(yīng)給用戶,到此一個(gè)流程結(jié)束丹拯。
JavaEE體系結(jié)構(gòu)包括四層趟济,從上到下分別是應(yīng)用層、Web層咽笼、業(yè)務(wù)層、持久層戚炫。Struts和SpringMVC是Web層的框架剑刑,Spring是業(yè)務(wù)層的框架,Hibernate和MyBatis是持久層的框架双肤。