【说明:】今天主要做了任务八
一:今日完成
⒈ task1—1 : spring rmi 远程访问
⑴ 技能点 1 :什么是 rmi
自己总结:之前做的项目 各个 模块都是 放在 一块的,比如 持久层,业务层,控制层,在真实 的项目中 不是 这样的,需要做到分布式部署,指的是 把 系统的 各个模块部署在不同的机器上,项目之间访问 需要能够调用,这就需要指定 访问地址和端口,以及约定好 通信协议。
远程访问有好多种,对于纯java 应用而言,rmi 方式是比较方便的。
⑵ 技能点 2 : 如何在 spring 体系中 使用
配置 服务端和客户端。
谁是服务端?谁又是客户端呢?
对于mvc 模式而言,明显的service 层需要提供服务,因此可以 将 service 服务作为 服务端,通过 register Port 提供服务(暴露接口),servicePort 传输数据。
对于配置文件 serverRMI.xml 而言,采用 bean 的配置模式,交给spring管理。
⑶ 技能点 3 :需要注意的点
客户端访问时候指定的端口是 服务端提供的 注册端口。
⒉ task1—2 : 部署两个 service 和 两个 web
⑴ 技能点 1 :service
两个service 提供的服务是一模一样的 就是 业务拆分而已,当时提供的访问端口也是不一样的。
如果是maven 管理的话 需要 指定父模块和 子模块,service1 和 service2 都是子模块。
service 需要依赖 dao层,所以需要 定义 dao 层的接口,和 映射文件。
⑵ 技能点 2 :web
对于web 服务而言也是同样的,业务处理 特别是controller 层的实现 都是一样的。
web 里面 是可以通过配置文件 指定两个 service,甚至可以 通过判断 sevice 的状态,切换访问,一个service 不能正常提供服务的话就指定另一个。
反过来,两个web 也是给用户 提供的 ,通过在nginx 里面配置负载均衡,可以使用户 的访问 按照想要的分配 方式 分配给不同的 web。
多次运行之后:我用的是随机数访问,没有用nginx 做 负载均衡
⑶ 技能点 3 : nginx 配置 负载均衡
因为编辑器的原因,图片被自动转成 链接的形式。
⒊ task1—3 :知识点总结
⑴ 技能点 1 :long 和Long 的区别
long 是 基本数据类型;Long是包装数据类型
long 没有自己的方法和属性;Long有自己的方法和属性。
long 只能创建引用;Long 创建的是对象、
集合类不能放 long ,只能放 Long。
long 存放在栈 中,速度快可以共享;Long存放在 堆中,速度没有long快。
⑵ 技能点 2 : eclipse 和tomcat 的包养关系。
eclipse 默认是把发布的web应用放在自己的 目录里面
. metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps \
如果不做更改的话,就会发布到上面的路径里面。
并且eclipse 生成tomcat 的时候,会保持一份自己的 server 配置文件 ,这是默认的,会和 tomcat 目录下面的 配置文件保持同步,更改的话,需要更改eclipse 里面的。
⑶ 技能点 3 :maven 多模块依赖
今天在运行 spring rmi 项目的时候,发现虽然自己最开始在service 和web 里面依赖的core 也就是model 层的代码 是有问题的,我以为依赖的是 install 到本地里面的jar 包,结果发现不是,而是 eclipse compile ,也是 本地工程依赖,而不是本地仓库/远程仓库。
那该怎么办呢?关闭 core 子项目,然后maven 就会去本地仓库里面找。
(4) 技能点 4 :java ee 指的是什么
先说java se :包括 java语言规范,java类库,java工具类,java虚拟机。
jdk 默认包含 java虚拟机,而虚拟机还有其它的,比如 JRocket 等等。
java ee 呢,需要有分布式协调,跨网络通信。一个是javaEE server ,比如web container和 EJB container。还有java EE api
(5) 技能点 5:javaee.jar 都有什么
为什么说这个问题呢?因为今天在代码里面使用到了一段代码,
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(ServletActionContext
.getServletContext());
这个用到了javaee.jar,然后自己就想知道为什么。
发现这是开发javaee 应用的必备包,就像servlet.jar一样。
(6) 技能点 6 :EL表达式的使用
基本的 语法结构就是 ${} ,可以通过[] 和 . 两种运算符来存取数据。
如果属性包含 特殊字符 或者是动态取值 ,就需要用到 [] .
el表达式的取值范围有四个级别 page ,request,session,application。
el表达式 可以操作 变量,常量和隐式对象(比如param 和paramValues)
取值:
去session取值:
可以用常规方法 sesion.getAttribute("username");
也可以用 ${session.username}
取得输入参数:
常规方法 request.getParameter(String name)
el 表达式 ${param.name}
pageContext:
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.sesion.id} 取得用户的session ID
(7) 技能点 7:页面传值&前后端传值
form 表单的的形式:
前端input 给后端,后端 request.getParameter("name") 取得值。
后端再通过 request.setAttribute("name",name); 返回给前端
前端 ${name} 取得值
javaBean传值的方式(需要有setter 和getter 方法):
前端传给后端:
1, 通过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") ;) ];
后端进行处理:
需要用到注解 @requestBody 将 请求正文 转为 HttpMessageConverter 对象。
} 得到值之后
需要 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自动封装:
后端有对象,前端传的参数里面包含 对象的属性,那么User user 参数将自动封装
二:明日计划
明天因为时间充足(or 有限),打算完成
①任务九应该完成
②前后端传值需要复习巩固一下
③数据存储方式需要了解一下,比如hashMap
三:疑难问题
四:思考总结
Ⅰ 对自己今天的进度满意吗
------------------还好了,没有哪一块卡的时间特别长
Ⅱ 那些困扰自己的问题所在
------------------json通过jsp显示后,一下子全部显示出来,即使我指定了属性还不行
Ⅲ 暗示自己为明天加油打劲
------------------胡靖说他们公司有一个应届生学的特别快,我也要努力