【說(shuō)明:】今天主要做了任務(wù)八
一:今日完成
⒈ task1—1 : spring rmi 遠(yuǎn)程訪問(wèn)
⑴ 技能點(diǎn) 1 :什么是 rmi
自己總結(jié):之前做的項(xiàng)目 各個(gè) 模塊都是 放在 一塊的沸伏,比如 持久層,業(yè)務(wù)層坪创,控制層,在真實(shí) 的項(xiàng)目中 不是 這樣的,需要做到分布式部署搏明,指的是 把 系統(tǒng)的 各個(gè)模塊部署在不同的機(jī)器上肛响,項(xiàng)目之間訪問(wèn) 需要能夠調(diào)用,這就需要指定 訪問(wèn)地址和端口麸拄,以及約定好 通信協(xié)議派昧。
遠(yuǎn)程訪問(wèn)有好多種,對(duì)于純java 應(yīng)用而言拢切,rmi 方式是比較方便的蒂萎。
⑵ 技能點(diǎn) 2 : 如何在 spring 體系中 使用
配置 服務(wù)端和客戶端。
誰(shuí)是服務(wù)端淮椰?誰(shuí)又是客戶端呢五慈?
對(duì)于mvc 模式而言纳寂,明顯的service 層需要提供服務(wù),因此可以 將 service 服務(wù)作為 服務(wù)端泻拦,通過(guò) register Port 提供服務(wù)(暴露接口)毙芜,servicePort 傳輸數(shù)據(jù)。
對(duì)于配置文件 serverRMI.xml 而言争拐,采用 bean 的配置模式腋粥,交給spring管理。
⑶ 技能點(diǎn) 3 :需要注意的點(diǎn)
客戶端訪問(wèn)時(shí)候指定的端口是 服務(wù)端提供的 注冊(cè)端口架曹。
⒉ task1—2 : 部署兩個(gè) service 和 兩個(gè) web
⑴ 技能點(diǎn) 1 :service
兩個(gè)service 提供的服務(wù)是一模一樣的 就是 業(yè)務(wù)拆分而已隘冲,當(dāng)時(shí)提供的訪問(wèn)端口也是不一樣的。
如果是maven 管理的話 需要 指定父模塊和 子模塊音瓷,service1 和 service2 都是子模塊对嚼。
service 需要依賴 dao層,所以需要 定義 dao 層的接口绳慎,和 映射文件纵竖。
⑵ 技能點(diǎn) 2 :web
對(duì)于web 服務(wù)而言也是同樣的,業(yè)務(wù)處理 特別是controller 層的實(shí)現(xiàn) 都是一樣的杏愤。
web 里面 是可以通過(guò)配置文件 指定兩個(gè) service靡砌,甚至可以 通過(guò)判斷 sevice 的狀態(tài),切換訪問(wèn)珊楼,一個(gè)service 不能正常提供服務(wù)的話就指定另一個(gè)通殃。
反過(guò)來(lái),兩個(gè)web 也是給用戶 提供的 厕宗,通過(guò)在nginx 里面配置負(fù)載均衡画舌,可以使用戶 的訪問(wèn) 按照想要的分配 方式 分配給不同的 web。
多次運(yùn)行之后:我用的是隨機(jī)數(shù)訪問(wèn)已慢,沒有用nginx 做 負(fù)載均衡
⑶ 技能點(diǎn) 3 : nginx 配置 負(fù)載均衡
因?yàn)榫庉嬈鞯脑蚯簦瑘D片被自動(dòng)轉(zhuǎn)成 鏈接的形式。
⒊ task1—3 :知識(shí)點(diǎn)總結(jié)
⑴ 技能點(diǎn) 1 :long 和Long 的區(qū)別
long 是 基本數(shù)據(jù)類型佑惠;Long是包裝數(shù)據(jù)類型
long 沒有自己的方法和屬性朋腋;Long有自己的方法和屬性。
long 只能創(chuàng)建引用膜楷;Long 創(chuàng)建的是對(duì)象旭咽、
集合類不能放 long ,只能放 Long赌厅。
long 存放在棧 中穷绵,速度快可以共享;Long存放在 堆中察蹲,速度沒有l(wèi)ong快请垛。
⑵ 技能點(diǎn) 2 : eclipse 和tomcat 的包養(yǎng)關(guān)系催训。
eclipse 默認(rèn)是把發(fā)布的web應(yīng)用放在自己的 目錄里面
. metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps \
如果不做更改的話,就會(huì)發(fā)布到上面的路徑里面宗收。
并且eclipse 生成tomcat 的時(shí)候漫拭,會(huì)保持一份自己的 server 配置文件 ,這是默認(rèn)的混稽,會(huì)和 tomcat 目錄下面的 配置文件保持同步采驻,更改的話,需要更改eclipse 里面的匈勋。
⑶ 技能點(diǎn) 3 :maven 多模塊依賴
今天在運(yùn)行 spring rmi 項(xiàng)目的時(shí)候礼旅,發(fā)現(xiàn)雖然自己最開始在service 和web 里面依賴的core 也就是model 層的代碼 是有問(wèn)題的,我以為依賴的是 install 到本地里面的jar 包洽洁,結(jié)果發(fā)現(xiàn)不是痘系,而是 eclipse compile ,也是 本地工程依賴饿自,而不是本地倉(cāng)庫(kù)/遠(yuǎn)程倉(cāng)庫(kù)汰翠。
那該怎么辦呢?關(guān)閉 core 子項(xiàng)目,然后maven 就會(huì)去本地倉(cāng)庫(kù)里面找昭雌。
(4) 技能點(diǎn) 4 :java ee 指的是什么
先說(shuō)java se :包括 java語(yǔ)言規(guī)范复唤,java類庫(kù),java工具類烛卧,java虛擬機(jī)佛纫。
jdk 默認(rèn)包含 java虛擬機(jī),而虛擬機(jī)還有其它的总放,比如 JRocket 等等呈宇。
java ee 呢,需要有分布式協(xié)調(diào)局雄,跨網(wǎng)絡(luò)通信攒盈。一個(gè)是javaEE server ,比如web container和 EJB container哎榴。還有java EE api
(5) 技能點(diǎn) 5:javaee.jar 都有什么
為什么說(shuō)這個(gè)問(wèn)題呢?因?yàn)榻裉煸诖a里面使用到了一段代碼僵蛛,
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(ServletActionContext
.getServletContext());
這個(gè)用到了javaee.jar尚蝌,然后自己就想知道為什么。
發(fā)現(xiàn)這是開發(fā)javaee 應(yīng)用的必備包充尉,就像servlet.jar一樣飘言。
(6) 技能點(diǎn) 6 :EL表達(dá)式的使用
基本的 語(yǔ)法結(jié)構(gòu)就是 ${} ,可以通過(guò)[] 和 . 兩種運(yùn)算符來(lái)存取數(shù)據(jù)。
如果屬性包含 特殊字符 或者是動(dòng)態(tài)取值 驼侠,就需要用到 [] .
el表達(dá)式的取值范圍有四個(gè)級(jí)別 page 姿鸿,request谆吴,session,application苛预。
el表達(dá)式 可以操作 變量句狼,常量和隱式對(duì)象(比如param 和paramValues)
取值:
去session取值:
可以用常規(guī)方法 sesion.getAttribute("username");
也可以用 ${session.username}
取得輸入?yún)?shù):
常規(guī)方法 request.getParameter(String name)
el 表達(dá)式 ${param.name}
pageContext:
${pageContext.request.queryString} 取得請(qǐng)求的參數(shù)字符串
${pageContext.sesion.id} 取得用戶的session ID
(7) 技能點(diǎn) 7:頁(yè)面?zhèn)髦?amp;前后端傳值
form 表單的的形式:
前端input 給后端,后端 request.getParameter("name") 取得值热某。
后端再通過(guò) request.setAttribute("name",name); 返回給前端
前端 ${name} 取得值
javaBean傳值的方式(需要有setter 和getter 方法):
前端傳給后端:
1腻菇, 通過(guò)ajax:
傳輸格式是json字符串,ajax用到了Jquery昔馋,所以需要加入引用筹吐。
js傳值:
function test(){
var users=[ {name : '張三'} , {name:'李四'} ];
$.ajax( { type: 'piost' ,data: json.strinfify ( users ) ,contentType:'json' url: 'user/saveJsonUser.do' sucess: function(data) { alert("ok" ); } error("errror") ;) ];
后端進(jìn)行處理:
需要用到注解 @requestBody 將 請(qǐng)求正文 轉(zhuǎn)為 HttpMessageConverter 對(duì)象。
} 得到值之后
需要 Map result = newHashMap(); result.put("success","123"); return result ;
springMVC前后端傳值:
@PathVarible String name ---- /name
@PathParam("name") String name ------- ?name=123
@RequestParam("name") String classifyId ------?name=123
@requestBody json xml 格式的
@RequestHeader ("host") String hostAddr
Spring自動(dòng)封裝:
后端有對(duì)象秘遏,前端傳的參數(shù)里面包含 對(duì)象的屬性丘薛,那么User user 參數(shù)將自動(dòng)封裝
二:明日計(jì)劃
明天因?yàn)闀r(shí)間充足(or 有限),打算完成
①任務(wù)九應(yīng)該完成
②前后端傳值需要復(fù)習(xí)鞏固一下
③數(shù)據(jù)存儲(chǔ)方式需要了解一下邦危,比如hashMap
三:疑難問(wèn)題
四:思考總結(jié)
Ⅰ 對(duì)自己今天的進(jìn)度滿意嗎
------------------還好了洋侨,沒有哪一塊卡的時(shí)間特別長(zhǎng)
Ⅱ 那些困擾自己的問(wèn)題所在
------------------json通過(guò)jsp顯示后,一下子全部顯示出來(lái)铡俐,即使我指定了屬性還不行
Ⅲ 暗示自己為明天加油打勁
------------------胡靖說(shuō)他們公司有一個(gè)應(yīng)屆生學(xué)的特別快凰兑,我也要努力