黑马程序员:三大框架11天笔记全之Struts2-day01笔记(合集5篇)

时间:2019-05-12 19:36:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《黑马程序员:三大框架11天笔记全之Struts2-day01笔记》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《黑马程序员:三大框架11天笔记全之Struts2-day01笔记》。

第一篇:黑马程序员:三大框架11天笔记全之Struts2-day01笔记

黑马程序员:三大框架Struts2-day01笔记

第1章 框架概述

什么是框架,为什么使用框架,框架优点

框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。框架是在特定的领域内解决问题。优点

重用代码大大增加,软件生产效率和质量也得到了提高

使用框架开发,它提供统一的标准,大大降低了我们的后期维护。学习框架重点:了解框架做了什么,我们要在这个基础上在做什么事情。

第2章 java开发中常用框架

SSH

(SSM SSI)SSH struts2 spring hibernate SSM(SSI)springmvc spring mybatis(ibatis)

SSH 它是企业开发中比较主流的一套架构。SSH框架在开发中所处的位置:

黑马程序员郑州中心 编著

第3章 Struts2框架介绍

什么是struts2框架,学习struts2框架的核心。

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互

Struts2=struts1+webwork

问题:struts2是一个mvc框架,它的mvc是什么?

javaweb开发中的mvc,是在jsp的model2模式中提过 Model------javabean View--------jsp Controller----servlet

黑马程序员郑州中心 编著

核心点: 1.拦截器 interceptor 2.Action 3.ognl与valueStack

在现在开发中与struts2比较类似的框架有哪些? Struts1 webwork springmvc jsf

Struts2框架流程

黑马程序员郑州中心 编著

第4章 今天内容介绍与重点

今天内容:

一个简单的登录案例

在这个案例中,我们要使用struts2框架怎样解决

重点: 1.struts2框架如何完成原来由servlet完成的工作。2.Struts2框架如何完成请求参数的封装处理 3.Struts2框架如何完成页面跳转。

黑马程序员郑州中心 编著

第5章 简单登录案例原型

需要三个jsp页面

login.jsp

success.jsp failer.jsp 还需要一个servlet

LoginServlet 主要完成的是业务逻辑操作。

login.jsp

LoginServlet

黑马程序员郑州中心 编著

第6章 Struts2框架来完成登录操作

6.1 问题:为什么使用struts2框架?

Struts2框架它是一个在web中应用的mvc框架。我们使用strtus2框架来完成web开发有什么优势?

6.2 问题:怎样使用strtuts2框架

首先要上网下载它的jar包。步骤: 1.导入相关的jar文件

2.需要在web.xml文件中配置一个Filter(只有配置了它才可以使用struts2框架)

黑马程序员郑州中心 编著

3.struts.xml配置

4.创建Action来完成逻辑操作

6.3 快速入门

我们使用的是struts2 2.3.24版本

我们使用strtus2框架不是直接将它的lib包下的所有的jar文件copy到项目中,而是使用其中的一部分。

我们可以参考它的示例代码:

1.导入13个jar包

2.需要在web.xml文件中配置StrutsPrepareAndExecuteFilter 3.创建一个struts.xml文件,它的位置是可以放置在src下。

黑马程序员郑州中心 编著

6.3.1 代码实现 6.3.1.1 jsp页面

6.3.1.2 Action

6.3.1.3 struts.xml文件配置

6.3.2 流程分析

黑马程序员郑州中心 编著

6.4 使用struts2完成简单登录操作

1.login.jsp页面不变动

2.创建一个LoginAction来完成逻辑操作 3.在struts.xml文件中完成配置操作

问题1:在LoginAction中如何得到username与password 可以直接在Action类中提供成员属性,并为其提供get/set方法。就可以得到请求参数

问题2:如果实现路径跳转?

1.我们可以给action中的方法添加一个String返回值

2.在struts.xml配置文件中,在其对应的action配置上通过来确定跳转的路径。

黑马程序员郑州中心 编著

第7章 Struts2框架执行流程

7.1 Struts2源码导入

对于struts2框架它的源代码我们主要使用三部分 1.struts2核心部分源代码

org.apache.struts2xx

srccoresrcmainjava

2.struts2的xwork核心部分源代码

srcxwork-coresrcmainjavacomopensymphonyxwork2 3.struts2的插件的源代码

srcplugins 7.2 关于struts.xml配置文件中提示问题

第一步

在eclipse的window下首选面中查找xml catalog 第二步

Location:配置本地的dtd文件路径 key type:选择URI

黑马程序员郑州中心 编著

Key: http://struts.apache.org/dtds/struts-2.3.dtd

注意版本要对应,如果你可以上网,那么会自动缓存dtd,具有提示功能。

7.3 执行流程介绍

1.当通过浏览器发送一个请求

2.会被StrutsPrepareAndExecuteFilter拦截

3.会调用strtus2框架默认的拦截器(interceptor)完成部分功能 4.在执行Action中操作

5.根据Action中方法的执行结果来选择来跳转页面Resutl视图

一般管StrutsPrepareAndExecuteFilter 叫做前端控制器(核心控制器),只有配置了这个filter我们的strtus2框架才能使用。

黑马程序员郑州中心 编著

Strtus2的默认拦截器(interceptor)它们是在struts-default.xml文件中配置 注意:这上xml文件是在strtus-core.jar包中。默认的拦截器是在defaultStack中定义的。

第8章 Struts2配置详解

8.1 Struts2配置文件加载顺序

第一个加载的是default.properties文件

位置:strtus2-core.jar包

org.apache.struts2包下 作用:主要是声明了struts2框架的常量

第二个加载的是一批配置文件

Strtus-default.xml 位置:struts2-corl.jar

作用:声明了interceptor result bean Strtus-plugin.xml 位置:在strtus2的插件包中 作用:主要用于插件的配置声明 Strtus.xml

黑马程序员郑州中心 编著

位置:在我们自己的工程中

作用:用于我们自己工程使用strtus2框架的配置 第三个加载的是自定义的strtus.properties 位置:都是在自己工程的src下 作用:定制常量 第四自定义配置提供

第五加载的是web.xml配置文件

主要是加载strtus2框架在web.xml文件中的相关配置.第六 bean相关配置

重点掌握: 1.Default.properties 2.Struts-default.xml 3.Struts-plugin.xml 4.Strtus.xml 5.web.xml

8.2 struts.xml文件配置介绍

8.2.1 package配置

1.name属性

作用:定义一个包的名称,它必须唯一。

黑马程序员郑州中心 编著

2.namespace属性 作用:主要是与action标签的name属性联合使用来确定一个action 的访问路径

3.extends属性 作用:指定继承自哪个包。一般值是strtus-default strtus-default包是在strtus-default.xml文件中声明的。

4.abstruct属性 它代表当前包是一个抽象的,主要是用于被继承

8.2.2 action配置

1.name属性 作用:主要是与package的namespace联合使用来确定一个action的访问路 径

2.class属性

作用:用于指示当前的action类

3.method属性

作用:用于指示当前的action类中的哪个方法执行

8.2.3 result配置

它主要是用于指示结果视图

1.name属性 作用是与action类的method方法的返回值进行匹配,来确定跳转路径 2.type属性 作用是用于指定跳转方式

8.2.4 扩展

关于action配置中的class与method的默认值以及result中的name与type 默认值问题

原因:strtus-default.xml文件中配置

黑马程序员郑州中心 编著

它的作用就是当一个请求来时,如果查找不到指定的class及对应的method就会执行 ActionSupport类中的execute方法。

在这个类的execute方法中默认返回的是”success”

也就是说,result的name属性默认值是success,默认的跳转方式是请求转发 dispatcher

8.3 常量配置

default.properties文件中定义了struts2框架常用常量.问题:我们怎样可以定义常量

1.可以在src下创建一个strtus.properties配置文件 2.可以在web.xml文件中配置

3.可以直接在strtus.xml文件中定义常量(推荐)

注意:后加载的配置文件中的常量会将先加载的常量覆盖

第9章 Struts2的Action详解

Struts2中的action,主要是完成业务逻辑操作。Action替代在servlet中完成的作用。

黑马程序员郑州中心 编著

Action的学习主要有两点

1.如何创建一个struts2的action 2.如果访问一个struts2的action

1. Action类创建方式(三种)1.创建一个pojo类

Pojo(plani Ordinary java object)简单的java对象 Pojo类就是没有实现任何接口没有继承任何类 优点:无耦合

缺点:所有的功能都要自己完成

2.创建一个类实现一个Action接口

com.opensymphony.xwork2.Action

在Action接口中定义了五个常量,一个execute方法 五个常量:它们是默认的五个结果视图: ERROR : 错误视图

INPUT: 它是struts2框架中interceptor中发现问题后会访问的一个视图 LOGIN:它是一个登录视图,可以在权限操作中使用

黑马程序员郑州中心 编著

NONE:它代表的是null,什么都不做(也不会做跳转操作)SUCCESS:这是一个成功视图 优点:耦合度低

缺点:还是需要自己来完成功能

3.创建一个类继承ActionSupport类

com.opensymphony.xwork2.ActionSupport ActionSupport类也实现了Action接口。我们在开发中一般会使用这种方案: 优点:具有丰富的功能,例如

表单校验 错误信息设置

国际化 缺点:耦合度高

9.1 action的访问方式

1.直接通过标签来配置,通过method来指定访问的方法,如果method没有,默认访问的是execute方法。

2.简化的action访问方式,可以使用*通配符来访问。

这种方式的缺点:不建议使用过多的*号,它带来程序阅读障碍,不便于理解 使用*来简化操作方案,它对名称规范必须进行一个统一。

黑马程序员郑州中心 编著

9.2 扩展--动态方法调用

这是strtus2提供的动态方法调用。

注意:对于strtus2的动态方法调用,要想使用我们必须配置一个常量来开启动态方法调用

这代表动态方法调用没有开启

黑马程序员郑州中心 编著

个人不建议使用动态方法调用

第10章 Struts2框架封装数据

主要解决的问题:是在action中如果获取请求参数

主要有两种方式: 1.属性驱动

a.直接在action类中提供与请求参数匹配属性,提供get/set方法

b.在action类中创始一个javaBean,对其提供get/set,在请求时页面上要进行修改,例如 user.username user.password ,要使用ognl表达式

以上两种方式的优缺点: 第一种比较简单,在实际操作我们需要将action的属性在赋值给模型(javaBean)去操作 第二种:不需要在直接将值给javaBean过程,因为直接将数据封装到了中。它要求在页面上必须使用ognl表达式,就存在页面不通用问题。javaBean

2.模型驱动

步骤: 1.让Action类要实现一个指定接口ModelDriven 2.实例化模型对象(就是要new出来javaBean)3.重写getModel方法将实例化的模型返回。

黑马程序员郑州中心 编著

对于模型驱动它与属性驱动对比,在实际开发中使用比较多,模型驱动缺点,它只能对

一个模型数据进行封装。

第11章 总结

今天主要内容是围绕着简单的登录案例来讲解: 1.关于strtus2框架的环境搭建 2.关于strtus2框架配置 3.关于strtus2框架请求参数封装 4.关于strtus2框架的路径跳转

关于action访问的配置

黑马程序员郑州中心 编著

namespace=””

extends=””>

class=””

method=””>

路径

关于路径跳转问题: 是通过来配置跳转的路径.它的name属性是与action中的方法的返回值进行对比的。它的type属性可以取哪些值?

默认值是dispatcher 它代表的是请求转发。针对于jsp页面 redirect 它代表的是重定向

针对于jsp页面

chain 它类似于请示转发,只不过它是针对于action跳转.redirectAction 它类似于重定向

针对于action 关于路径跳转的配置

可以直接在

下创建全局的result

黑马程序员郑州中心 编著

黑马程序员郑州中心 编著

第二篇:【黑马程序员】Java基础 : Java语句笔记

【黑马程序员】Java基础 : Java语句笔记

摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!

关键语句介绍

一、while 语句 一般形式:

whi l e(条件表达式){ 语句体 ……… } 执行过程:

条件表达式为真,执行语句体。否则,退出!

二、do while 语句 一般形式: do { 语句体 …….} while(条件表达式);执行过程:

先执行一次语句体,判断 条件表达式是否为真,为真再执行do语句中的语句体。为假,退出。

需要注意:与whi l e语句区别

黑马程序员合肥中心 编著

1.while(条件表达式)后面有分号;2.不管条件表达式是否为真,语句体均会执行一次。

三、for 语句 一般形式:

for(子句 1;子句 2;子句 3){ 语句体 …… } 执行过程:

四、break、cont inue 语句 break 退出所在循环 : int stopHere = 5;for(int i=1;i<8;i++){ if(i == stopHere){ break;} System.out.println(“i = ” + i);

黑马程序员合肥中心 编著

} //打印结果:5,6,7,8均没有打印出来。

需要注意的一个问题: int stopHere = 5;for(int i = 1;i < 8;i + +){ if(i = = stopHere){ / /语句体 } break;System.out.println(“i = ” + i);} 这个时候编译器会报错:无效的 System.out 输出语句。冷静分析一下:

break 语句会结束循环,所以不会再去执行 System.out 输出语句。编译会认为你在多此一举,sorry 报个错!

continue 退出本次循环,不会退出整个循环: int skipHere = 5;for(int i = 1;i < 8;i + +){ if(i = = skipHere){ continue;}

黑马程序员合肥中心 编著

System.out.println(“i = ” + i);} / /打印结果:除了5没有打印出来。

i = 1 i = 2

五、switch 语句 一般形式: switch(常量){ case 表达式1:语句体1;break;case 表达式2:语句体2;break;.....default : 语句体n;break;}

执行过程: 执行过程:

case 根据自己的表达式看是否匹配常量,如果匹配就执行语句体,否则执行 default 语句。

case 执行类似于并行操作,不是顺序操作。所以各个表达式的值不可以相同。

黑马程序员合肥中心 编著

哪个 case 匹配常量就会执行自己的语句体,不会再去寻找其他 case 语句。注意:

<1> case 穿透:省去break关键字

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 10;05 switch(i){ 06 case 10:

07 System.out.println(“ A”);08 //break;09 case 5: System.out.println(“ B”);11 //break;12 case 7: System.out.println(“ C”);14 //break;15 default : System.out.println(“ error”);17 break;18 }//打印结果:A B C error

<2> 在 Java 编程中 switch 括号中的常量的数据类型只可以为 int 类型或者是 byte、char、short(因为 byte、char、short 可以自动提升为 int),常量类型不可以是 long、float 和 double 等数据类型。<3> 多个 case 可以合并 , 相当于 “ 或 ”,例如下面 i 等于 10、5、7 都可以执行打印语句。

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 5;05 switch(i){ 06 case 10: 07 case 5: 08 case 7:

09 System.out.println(“ C”);10 break;11 default : System.out.println(“ error”);13 break;

黑马程序员合肥中心 编著 }//打印结果:C <4> default 语句可以省,但是不推荐,他后面的 break 可省 <5> case 或者 default 子句中可以写多条语句 case 7: System.out.println(“ C”);if(i == 5){ System.out.println(“ i = ” +i);} break;<6> case 或者 default 子句中还可以嵌套 switch 或者其他语句

六、return 语句

终止方法的运行并指定要返回的数据。两种形式:

<1> return 表达式;

<2> return ;没有任何数据直接返回,结束函数(方法)的执行。

七、if 语句

一般形式:

1.if(条件表达式){ 语句体} 2.if(条件表达式){ 语句体} else{语句体 } 3. if(条件表达式1){ 语句体} else if(条件表达式2){语句体 } else {语句体 }

特别注意:形式3,else与其最近的上个if 配对。例子:

[AppleScript] 纯文本查看 复制代码 ?

黑马程序员合肥中心 编著

01 /**

02 * @author 传智播客 03 */

04 public class TestIF {

05 public static void main(String[] args){ 06 int i = 30;07 if(i < 20){

08 System.out.println(“<20”);09 } else if(i < 50){ System.out.println(“<50”);11 } else if(i < 80){ System.out.println(“<80”);13 } else System.out.println(“>=80”);15 System.out.println(“黑马程序员!”);16 }

如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http://www.xiexiebang.com/去了解java基础知识!

黑马程序员合肥中心 编著

第三篇:黑马程序员android开发笔记(一)

01、什么是3G 02、android系统简介 03、android背景介绍 04、android的framewor简介 05、两种虚拟机的比较 06、sdk的下载以及简介 07、创建android模拟器 08、ddms简介

09、platform-tools的简介及常见adb指令

10、android项目的目录结构

11、android下apk安装的过程

12、常见的adb指令介绍

13、创建模拟器遇到的常见错误

14、电话拨号器

15、点击事件的四种写法

16、短信发送器

17、相对布局&单位介绍

18、现形布局&布局的组合

19、表格布局&绝对布局 20、帧布局

21、测试相关概念

22、android下junit测试框架配置

23、logcat简介

24、保存文件到手机内存

25、android下文件访问的权限

26、保存文件到SD卡中

27、分析setting源代码获取SD卡大小

28、_sharePreference入门

29、xml文件的序列化 30、采用pull解析xml文件

31、采用断电调试的方法观察pull解析的的流程

32、android下创建一个sqllite数据库

33、sql语句实现数据库的增删改查

34、系统api实现数据库的增删改查&Sqlite3工具的使用

35、数据库的事物

36、listView入门

37、采用layoutInflater打气筒创建一个view对象

38、采用数据适配器ArryAdapter

39、常用数据适配器simpleAdapter 40、数据适配器总结

41、内容提供者简介

42、内容提供者的实现

43、短信的备份

44、插入一条记录到系统短信应用

45、内容观察者

46、获取系统的联系人信息

47、保存联系人到系统通讯录

48、读取联系人的一个小细节

49、网络图片查看器

50、anr产生的原理&如何避免

51、android消息机制入门

52、网络html查看器

53、字符乱码问题的处理

54、采用get方式提交数据到服务器

55、采用post方式提交数据到服务器

56、提交数据到服务器中文乱码问题的处理

57、采用httpclient提交数据到服务器

58、异步http框架简介&实现原理

59、异步http框架提交数据到服务器 60、上传文件到服务器

61、smartimageview&常见开源代码 62、多线程下载的原理 63、多线程断点下载的原理

64、多线程java代码移植到android 65、多线程下载文本页面的更新 66、显示意图激活另一个activity 67、隐式意图激活另一个activity 68、隐式意图的配置

69、隐式意图和显示意图的使用场景 70、在不同activity之间数据传递 71、activity的声明周期 72、activity的启动模式

73、activity横竖屏切换的声明周期 74、开启新的activity获取他的返回值 75、请求码和结果码的作用 76、利用广播实现ip拨号 77、短信窃听器

78、自定义广播时间&发送自定义广播&广播接受者优先级 79、采用服务执行长期后台操作 80、采用服务窃听电话&服务的声明周期 81、android进程优先级&为什么使用服务 82、绑定方式开启服务&调用服务的方法 83、服务的声明周期(混合开启 84、采用aidl绑定远程服务

85、代码注册广播接受者&利用广播调用服务的办法 86、加载大图片到内存 87、获取图片exif信息 88、从gallery获取图片 89、图片画画板 90、扒开美女衣服 91、图片的缩放 92、图片的旋转

93、图片的平移&镜面&倒影效果 94、图片的合成 95、图片的颜色处理 96、多媒体播放api简介 97、人脸识别

98、mediaplayer的生命周期 99、soundpoo简介

100、sufaceview的生命周期 101、播放在线视频

102、视频播放器进度的处理 103、调用系统照相机拍照和录像 104、采用camera拍照 105、常见对话框 106、notification入门 107、菜单

108、android下的样式 109、android下的主题

110、代码编写ui 111、html创建ui 112、帧动画

113、代码创建创建的tween动画 114、xml文件定义动画 115、传感器简介 116、117、杀死进程 118、apk的安装 119、应用程序的反编译 120、动态创建fragment 121、用fragment创建一个选项卡 122、fragment的向下兼容性 123、fragment的生命周期 124、fragment之间的通讯 125、应用程序国际化

04、android的framewor简介

Wap:wait and play Wireless Makeup Language(WML)精简的html语言 Applications:android自带的基本上层应用 Aplication framework:应用程序框架 Librarics: Linux lernel:

05、两种虚拟机的比较

编译后文件格式:

jvm:.java->.class->.jar dalvik vm:.java->.dex->.odex 基于的架构:

jvm:基于栈的架构

dalvik vm:基于寄存器的架构

Cpu直接访问寄存器因此dalvik虚拟机的效率比jvm高

06、sdk的下载以及简介

->获取sdk工具包(sdk:standard develope kits)->ADT(android develop tools,实际上是eclipse的插件)SDK具体内容

Android 4.2.2(API16)

->SDK Plateform:开发时使用到的jar包->Samples for sdk:

->ARM EABI V7a System Image:模拟器运行时的镜像->Intel n86 Aton System:模拟器运行时的镜像->MIPS System Image:模拟器运行时的镜像->google APIs:google提供的jar包,可以直接使用google提供的一些API->source for android SDK:SDK全部的源代码 Extrals:

->tools:开发的工具

->support library:实现高版本的android向下的兼容->google Admed Ads SDK:gongle提供的广告插件->Analyties App Irackiong SDK:应用的用户分析->cloud message:云消息

->gongle play service:收费服务

->google USB Driver:真实的设备驱动

开发时:基于4.0,兼容2.2、2.3.3

07、创建android模拟器

avd:android virture developer VGA:480*640(电视的标准分辨率)QVGA:240*320(四分之一)HVGA:320*480(一半)WVGA:480*800(width)FWVGA:480*854(更宽)

08、ddms简介

ddms:模拟器不支持中文,因此发送中文会显示不出来

09、platform-tools的简介及常见adb指令

Android调试桥:内部实现就是socket让两个系统之间实现数据交互

->reset adb:模拟器找不到时候可以重启->adb device:列出所有的连接的设备->adb kill-server:杀死adb调试桥->adb start-server 启动adb调试桥 dx.bat:将.class文件打包

10、android项目的目录结构

一:SDK的目录结构

->Samples->Api demo:根据API demo(模拟器上面可以看见)的效果可以在sample中看见

相应的代码

->Source:jar包所有的sdk源代码都在这个文件夹里->SystemImage:系统镜像

->temp:下载更新临时存储的文件夹,一般是空的->tools:emulater.ext 不同版本的模拟器

二:New Android Application->theme:留给以后作为扩展,现在并没有太大的作用->target SDK:一般选择高版本,因为高版本对下兼容

->mark project as a library:一般不选择,意思是将这个项目提供一个

jar包供别人使用 三:文件夹目录

.setting:设置目录

assets:资产目录,存放一些文件,这些文件会被原封不动打包到应用程序的 apk中

bin:

gen:自动生成的目录

->builderConfig.java:生成的配置信息->R.java: Android 4.1.2->android.jar开发环境,jar包

可以在properties中修改,jar包就是SDK

011、Android下apk的安装过程

一、Android安装过程分析:

->setContentView:甚至view的对象,把里面的xml文件加载到

->在project中选择build automaticly会自动把文件生成字节码文件,.class $代表的class文件生成的是内部类->dex.bat文件会把.class文件生成.dex文件

->apk压缩文件解压内部内容

->META-INF: 应用程序的签名

eclipse的调试签名文件

->res:资源文件

->classes.dex:class文件

->resources.arsc:资源ID映射

->android软件安装的过程:

->拷贝xxx.apk带/data/app/xxx-1.apk->在/data/data目录下创建一个文件夹,文件夹名称当前应用程序的报名

012、常见adb指令

前提:

->设备连接上电脑而且驱动安装正常,如果安装不正常的话,会有黄色的问号显示;

->设备上打开USB调试;

指令:

->adb device(如果启动发现这个程序没有安装会自动安装)->adb kill-server->adb start-server->adb uninstall <包名>->adb-s emulator-5554 install c:usersadministratorhello.apk 如果有多个设备的话,如果不指定安装的是哪个设备程序会报错->adb push haha.prop /sdcard/haha.txt 将文件移到

(360管家,豌豆荚之类的软件他们也是用的adb指令,倘若电脑上装这些软件的话,会因为两个adb指令抢端口号而挂掉)(adb版本之间兼容不是很好,经常报错可以考虑下版本的问题)->adb shell:远程连接到了android的linux终端

ls:显示文件夹

ps:显示正在运行的程序 ping:网络连通性

013、创建模拟器遇到的常见错误

->路径最好不要有中文:

->应用安装不上,或者安装模拟器的时候开启一个新的模拟器:

可能是模拟器的资源被占用,模拟器在运行的时候其实占用着硬盘上面的一个文件,这个文件位于工作空间.android/avd/iphone.avd 里面会有镜像文件,当一个模拟器开启起来了,就给你创建一个文件夹.knock的文件夹,代表着这个模拟器被锁定了,如果把模拟器关掉,就没有程序占据这几个镜像资源了,那么这几个程序就会被自动删除。通常情况下不会出问题,开启时候创建文件,关闭时关闭文件,但是当电脑出现不正常状态时:比如蓝屏,停电关机时候这些资源还没来得及删除,模拟器就关闭了,因此开启时这些资源仍在,程序默认模拟器被占用,因此会重新开启一个模拟器。

->模拟器没有信号:

模拟器用socket桥接在电脑上

终结解决方案是给电脑连上网,分配一个IP->常见命令操作:

14、电话拨号器

->新建文件

->界面设置:文本框、点击按钮

->:一旦获得焦点,会立刻弹出,输入文本的软键盘->ctrl+x删除->ctrl+1提示

->设置点击事件:找到空间,然后设置点击事件,再点击事件里面获得了另外一

个空间的数据,激活一个intent->获得权限:清单文件中添加uses permision

15、点击事件的四种写法

->电话拨号器的优化:

每次拨打电话都会执行的操作是:查找控件,然后找到控件的文本,拨打电

话。其实每次拨打电话文本控件已经创建好了没有必要每次查找按钮之后再 查询控件。

package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(new MyListener());}

private class MyListener implementsandroid.view.View.OnClickListener{

@Override

public void onClick(View arg0){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);

}

}

@Override public boolean onCreateOptionsMenu(Menu menu){ // Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;} }

->

1、点击事件的四种写法:

->给按钮注册点击事件:创建一个内部类定义点击事件。具体代码见上

button.setOnClickListener(new MyListener());

->

2、采用匿名内部类创建点击事件:

button.setOnClickListener(new OnClickListener()){

package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0){

// TODO 自动生成的方法存根

callPhone();

}

});}

@Override public boolean onCreateOptionsMenu(Menu menu){ // Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);} } }

->

3、如果有很多的按钮点击事件,建议用这种方式:让Activity实现点击 事件的接口,每个按钮点击事件都设置成this,让该类实现 OnClickListener然后进行判断。package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(this);}

@Override public boolean onCreateOptionsMenu(Menu menu){ // Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);}

@Override public void onClick(View v){

// TODO 自动生成的方法存根

switch(v.getId()){

case R.id.bt_dial:

callPhone();

break;

} } }->

4、在布局文件中绑定一个点击的方法,如果点击按钮就会调用这个方法,通

过反射技术试图调用这个方法

布局文件中设置: package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);

}

@Override public boolean onCreateOptionsMenu(Menu menu){ // Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}

public void dialButtonClick(View v){ callPhone();}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);} }

16、短信发送器

->界面的设计:两个large Text,一个Button

android:textColor 设置字体颜色

android:singleLine=“true” 设置是否是单行

android:lines=“5” 设置行数

windows下面的颜色是GBR,而android下需要输入的格式确实

RGB,所以需要转换

adb默认设置time out为5秒->内容设计:按钮-文本->判断->发送

导包的时候千万别导到gsm包,否则会显示过时;

发送没有历史记录 package com.example.sms;

import java.util.ArrayList;

import android.app.Activity;import android.os.Bundle;import android.telephony.SmsManager;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private EditText et_number;private EditText et_content;

@Override protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button button =(Button)findViewById(R.id.bt_send);

et_number =(EditText)findViewById(R.id.et_number);

et_content =(EditText)findViewById(R.id.et_content);

button.setOnClickListener(this);}

@Override public boolean onCreateOptionsMenu(Menu menu){

// Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);

return true;}

@Override public void onClick(View v){

// TODO 自动生成的方法存根

switch(v.getId()){

case R.id.bt_send:

String number = et_number.getText().toString().trim();

String content = et_content.getText().toString().trim();

if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){

Toast.makeText(this, “号码或者内容不能为空”,Toast.LENGTH_SHORT).show();

return;

}else{

SmsManager smsManager = SmsManager.getDefault();

ArrayList contents = smsManager.divideMessage(content);

for(String str:contents){

smsManager.sendTextMessage(number, null, str, null, null);

}

}

} } }

17、相对布局&单位介绍

->布局说明:

->同级控件:

android:layout_toRightOf=“" android:layout_toLeftOf=”“ android:layout_below=”' android:layout_above=“" android:layout_maginBottom=”“

->相对父控件:

android:ayout_centerInParent=”“ android: layout_centerHorizontal=”“ android:layout_centerVertical=”“ android:layout_alignParentBottom=”“ android:layout_alignParentRight=”“->对齐方式:

->文本颜色:#00000000~#ff000000(argb)文字的透明度->单位介绍:

dp也就是dip:device independent pixels(设备独立像素),是一种与密度无关的像素单位,在每英寸160点的屏幕上,1dp = 1px。不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素

1.

下载黑马程序员:三大框架11天笔记全之Struts2-day01笔记(合集5篇)word格式文档
下载黑马程序员:三大框架11天笔记全之Struts2-day01笔记(合集5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    黑马程序员_PHP_课程同步笔记day35:PDO介绍

    PDO介绍 pdo是什么? PDO: PHP 的 Data Object(php的数据对象) pdo到底是什么? 它相当于“别人”写的mysqldb工具类! 比如: $pdo = new pdo; //这就是$pdo的一个对象! 但pdo比我们......

    黑马程序员_PHP_课程同步笔记day41:验证码模块讲解

    【黑马程序员济南】PHP模块讲解之验证码部分 在日益庞大的网民的面前,如何能够合理的规避以防止服务器被恶意DoS攻击或者不法之徒利用机器程序自动贴牛皮癣广告?一条小小的验......

    黑马程序员_PHP_课程同步笔记day10:JS小游戏

    【黑马程序员】PHP课程同步笔记day10:JS小游戏 通过前几周的学习我们对JS有一定的了解,今天的内容就是将之前的学习的内容在小游戏中应用,希望大家能够在小游戏中进一步提升自......

    黑马程序员java培训就业班笔记:day05总结

    Day05 上午: 1、数组的静态初始化 多种定义格式: Int arr=new int//标准格式,可以明确数组的数据类型,和数组名,但是不知道数组的长度 Int arr=new int Int arr=new in......

    黑马程序员java培训就业班笔记:day10总结

    Day10总结: 1、多态的特点: 1、成员变量: 当在子父类中出现了相同的非私有成员变量时,在多态调用中的特点: 在编译时:参考引用型变量所属类中是否有调用的成员变量,如果有编译通过,......

    黑马程序员java培训就业班笔记:day06总结

    Day06总结: 上午 1、二维数组 格式: Int arr=new int; 代表1维数组的个数; 代表1维数组有三个元素; 内存图: 分析: 通过对内存图分布可知,首先在栈内存中加载main......

    黑马程序员_PHP_课程同步笔记day05:CSS介绍(二)

    【黑马程序员】PHP课程同步笔记day05:CSS介绍(二) CSS内边距属性:padding填充 Padding:一个数字,指的是四个方向是一样的(上右下左) Padding的四个属性:  Padding-top(上内边距),p......

    黑马程序员_PHP_课程同步笔记day36:PDO介绍(二)

    【黑马程序员济南】PDO介绍(二) 异常模式 使用一种特定的异常处理语法,则一发生错误,就会自动处理,不发生错误,就正常执行。 语法形式如下: try { //这里执行pdo的一些操作,比......