当前位置:首页 » 网页前端 » javaweb打印控件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

javaweb打印控件

发布时间: 2023-04-14 16:04:13

Ⅰ 在一个Activity的java程序中,具体看问题描述

1、Intent

Intent是各个组件之间交互的一种重要方式,它不仅可以指明当前组件想要执胡纯行的动作,而且还能在各组件之间传递数据。Intent一般可用于启动Activity、启动Service、发送广播等场景。

Intent大致可分为2中:

1、显示Intent

2、隐式Intent

1.1、显示Intent打开Activity

fun openActivity(){
val intent = Intent(this, KotlinFirstActivity::class.java)

intent.putExtra("param", "testParams")

startActivity(intent)

}

注意:KotlinFirstActivity::class.java就相当盯念于Java中的KotlinFirstActivity.class。

1.2、隐式Intent打开程序内的Activity

相比于显示Intent,隐式Intent并不指明启动那个Activity而是指定了一系列的action和category,然后交由系统去分析找到合适的Activity并打开。

什么是合适的Activity,其实就是和隐式Intent中指定的action和category完全匹配的Activity,而action和category我们可以在AdnroidManifest中指定。

在标签中配置了action和category,只有和隐式Intent中的action和category完全匹配才能正常的打开该页面。

val intent = Intent("com.example.abu.alertdialogdemo.ACTION_START")

startActivity(intent)

不是说action和category要完全匹配才能打开页面吗?这是因为android.intent.category.DEFAULT是一种默认的category,在调用startActivity()时会自动将这个category添加到Intent中。所以在Manifest中一定不要忘记配置这个默认的category:android.intent.category.DEFAULT,否则会报错。

还有一点需要注意:Intent中只能添加一个action,但是可以添加多个category。

1.3、隐式Intent打开程序外的Activity

比如我们要打开系统的浏览器

fun openWeb(view: View) {
val intent = Intent(Intent.ACTION_VIEW)

intent.data = Uri.parse("https://www..com")

startActivity(intent)

}

Intent.ACTION_VIEW是系统内置的动作,然后将https://www..com通过Uri.parse()转换成Uri对象,传递给intent.setData(Uri uri)函数。Kotlin中intent.data=Uri.parse("https://www..com")就相当于Java中的intent.setData(Uri.parse("https://www..com")),这是Kotlin中的语法糖。

与此对应在标签中配置一个标签,用于更精确的指定当前Activity能够相应的数据。标签中主要可以配置一下内容:

1、android:scheme:用于指定数据的协议部分,如https

2、android:host:用于指定数据的主机名凯做困部分,如www..com

3、android:port:用于指定数据的端口,一般紧随主机名后

4、android:path:用于指定数据的路径

5、android:mimeType:用于指定支持的数据类型

只有当标签中指定的内容和Intent中携带的data完全一致时,当前Activity才能响应该Intent。下面我们通过设置data,让它也能响应打开网页的Intent。

我们在ThirdActivity的中配置当前Activity能够响应的action是Intent.ACTION_VIEW的常量值,而category指定了默认的category值,另外在标签data中我们通过android:scheme="https"指定了数据的协议必须是https。另外由于AndroidStudio认为能够响应ACTION_VIEW的Activity都应该加上BROWSABLE的category,否则会报出警告。加上BROWSABLE的category是为了实现deep link 功能和目前学习无关,所以我们在intent-filter标签上添加tools:ignore="AppLinkUrlError"忽略警告。

然后我们就能通过隐式Intent的方法打开ThirdActivity了,代码如下:

val intent= Intent(Intent.ACTION_VIEW)

intent.data=Uri.parse("https:")

startActivity(intent)

除了指定android:scheme为https我们也能随意指定它的值,只需要保证AndroidManifest中设置的值和Intent中设置的data相对应即可。

2、Activity的生命周期

Activity类中定义了7个回调方法,覆盖了Activity声明周期的每一个环节。

1、onCreate(): 在Activity第一次创建时调用

2、onStart():在Activity可见但是没有焦点时调用

3、onResume():在Activity可见并且有焦点时调用

4、onPause():这个方法会在准备启动或者恢复另一个Activity时调用,我们通常在该方法中释放消耗CPU的资源或者保存数据,但在该方法内不能做耗时操作,否则影响另一个另一个Activity的启动或恢复。

5、onStop():在Activity不可见时调用,它和onPause主要区别就是:onPause在失去焦点时会调用但是依然可见,而onStop是完全不可见。

6、onDestory():在Activity被销毁前调用

7、onRestart():在Activity由不在栈顶到再次回到栈顶并且可见时调用。

为了更好的理解Activity的生命周期,看下图

Activity生命周期.png

3、体验Activity的生命周期

下面我们通过实例更直观的看下Activity的生命周期过程。

1、打开FirstActivity,生命周期过程如下

FirstActivity onCreate

FirstActivity onStart

FirstActivity onResume

2、在FirstActivity中打开SecondActivity,生命周期过程如下

FirstActivity onPause

SecondActivity onCreate

SecondActivity onStart

SecondActivity onResume

FirstActivity onStop

可以看到在打开SecondActivity时FirstActivity的onPause会执行,所以在onPause中是不能做耗时操作的,否则会影响SecondActivity的打开。

3、按返回键回到FirstActivity,生命周期过程如下

SecondActivity onPause

FirstActivity onRestart

FirstActivity onStart

FirstActivity onResume

SecondActivity onStop

SecondActivity onDestroy

可以看到在返回FirstActivity时会调用SecondActivity的onPause,如果SecondActivity的onPause中做了耗时操作的话,那么也会影响Activity的返回。而且当FirstActivity再次回到栈顶时会调用其onRestart,此时并不会执行onCreate因为FirstActivity并没有销毁。

4、Activity被回收了时的生命周期

现在描述一种场景:打开ActivityA,然后在ActivityA的页面中打开ActivityB,此时ActivityA不在栈顶了如果内存不足可能会被回收,此时从ActivityB再回到ActivityA,下面描述下整个过程的生命周期。

1、打开ActivityA,执行的生命周期

ActivityA onCreate

ActivityA onStart

ActivityA onResume

2、打开ActivityB执行的生命周期

ActivityA onPause

ActivityB onCreate

ActivityB onStart

ActivityB onResume

ActivityA onStop

3、此时因内存不足,导致ActivityA被回收了,并返回ActivityA

ActivityA onDestory

ActivityB onPause

ActivityA onCreate

ActivityA onStart

ActivityA onResume

ActivityB onStop

从上面可以看出在ActivityA被回收后再次回到ActivityA时不再调用ActivityA的onRestart了,而是调用了ActivityA的onCreate,因为ActivityA已经被销毁了。

5、Activity被销毁,其中的临时数据怎么办

ActivityA被销毁了,这也就说明其中的临时数据也会丢失了,比如ActivityA中有一个EditText,我们在其中输入了一段文字,然后启动ActivityB,此时由于内存紧张处于停止状态的ActivityA被回收了,返回到ActivityA你会发现EditText中输入的文字不见了,因为ActivityA重新创建了。

为此Activity提供了onSaveInstanceState方法,该方法能确保在被回收之前被调用,我们就能在onSaveInstanceState方法中进行临时数据的保存,然后我们可以在onCreate(savedInstanceState: Bundle?)中利用savedInstanceState进行数据的恢复。Activity被回收重新创建时onCreate(savedInstanceState: Bundle?)中的savedInstanceState不再为null否则为null,其中带有在savedInstanceState中保存的所有数据。

具体代码如下:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

Log.e("tag", "$tag onCreate")

//恢复数据

val tempData = savedInstanceState?.getString("data") ?: ""

et.setText(tempData)

}

//保存数据

override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)

Log.e("tag", "$tag onSaveInstanceState")

val tempData = et.text.toString().trim()

outState?.putString("data", tempData)

}

6、onSaveInstanceState()调用时机

1、用户按下HOME键

2、长按HOME键进入其他程序

3、按下电源键关闭屏幕

4、从ActivityA跳转到一个新的Activity

5、屏幕方向切换时,如从竖屏变成横屏

总而言之,onSaveInstanceState()是在你的Activity有可能在未经允许的情况下被回收时调用,Activity被销毁之前onSaveInstanceState()肯定会被触发,我们可以onSaveInstanceState()中保存临时数据,持久化的数据可以在onPause()中保存。

另外,虽然屏幕方向切换时,会造成Activity的重建会调用onSaveInstanceState(),但是不建议使用onSaveInstanceState()进行数据的保存,我们可以禁止屏幕的旋转或禁止屏幕旋转时Activity的重建。

禁止屏幕旋转

可以在Mainifest中设置屏幕固定为竖屏

android:screenOrieritation="portrait"

禁止屏幕旋转时Activity的重建

android:configChanges="orientation丨keyboardHidden丨screenSize"

7、Activity的启动模式

启动模式分为4种:

1、standard

2、singleTop

3、singleTask

4、singleInstance

我们可以在Manifest中通过android:launchMode指定启动模式。

7.1、standard模式

如果不显示指定启动模式,那么Activity的启动模式就是standard,在该模式下不管Activity栈中有无该Activity,均会创建一个新的Activity并入栈,并处于栈顶的位置。

7.2、singleTop模式

1、要启动的Activity位于栈顶

在启动一个ActivityA时,如果栈顶的Activity就是ActivityA,那么就不会重新创建ActivityA,而是直接使用,此时并不会调用ActivityA的onCreate(),因为并没有重新创建Activity,ActivityA的生命周期如下:

ActivityA onPause

ActivityA onNewIntent

ActivityA onResume

可以看到调用了onNewIntent(intent: Intent?),我们可以在onNewIntent(intent: Intent?)中通过intent来获取新传递过来的数据,因为此时数据可能已经发生了变化。

2、要启动的Activity不在栈顶

虽然我们指定了ActivityA的启动模式为singleTop,但是如果ActivityA在栈中但是不在栈顶的话,那么此时启动ActivityA的话会重新创建一个新的ActivityA并入栈,此时栈中就有2个ActivityA的实例了。

7.3、singleTask模式

如果准备启动的ActivityA的启动模式为singleTask的话,那么会先从栈中查找是否存在ActivityA的实例:

场景一、如果存在则将ActivityA之上的Activity都出栈,并调用ActivityA的onNewIntent()。

场景二、如果ActivityA位于栈顶,则直接使用并调用onNewInent(),此时和singleTop一样。

场景三、 如果栈中不存在ActivityA的实例则会创建一个新的Activity并入栈。

场景一:ActivityA启动ActivityB,然后启动ActivityA,此时生命周期过程:

ActivityB onPause

ActivityA onRestart

ActivityA onStart

ActivityA onNewIntent

ActivityA onResume

ActivityB onStop

ActivityB onDestroy

此时ActivityA不在栈顶,ActivityA之上有ActivityB,所以在启动ActivityA时ActivityA之上的ActivityB会出栈,ActivityA将置于栈顶,所以ActivityA的onRestart和ActivityB的onDestory会执行。

场景二:ActivityA启动ActivityA,此时生命周期过程:

ActivityA onPause

ActivityA onNewIntent

ActivityA onResume

此时ActivityA位于栈顶,此时singleTask和singleTop作用一样,都是直接使用ActivityA,并且会调用ActivityA的onPause、onNewIntent、onResume。

场景三:ActivityA启动ActivityB,此时生命周期过程:

ActivityA onCreate

ActivityA onStart

ActivityA onResume

7.4、singleInstance模式

不同于另外3个模式,指定singleInstance模式的Activity会启动一个新的返回栈来管理这个Activity(其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈),这么做的意义是什么?

想象一个场景:如果我们程序内的一个Activity是允许其他程序访问的,如果想实现其他程序和我们程序能共享这个Activity实例,该怎么实现呢?使用前面3中模式是无法做到的,因为每个应用程序都有自己的返回栈,同一个Activity在不同返回栈中肯定都创建了新的实例,而使用singleInstance就可以解决这个问题。在这种模式下,会有一个单独的返回栈来管理这个Activity,无论哪个应用程序来访问这个Activity,都在同一个返回栈中,也就解决了共享Activity实例的问题。

为了更好的理解下面我们实战一下:

1、将ActivityB的启动模式修改为singleInstance

android:name=".ActivityB"

android:launchMode="singleInstance" />

2、在ActivityA、ActivityB、ActivityC的onCreate中打印taskId

##ActivityA

val tag = javaClass.simpleName

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

Log.e("TAG", "$tag taskId=$taskId")

}

##ActivityB

val tag = javaClass.simpleName

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(activity_second)

Log.e("TAG", "$tag taskId=$taskId")

}

##ActivityC

val tag = javaClass.simpleName

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(activity_c)

Log.e("TAG", "$tag taskId=$taskId")

}

在Kotlin中javaClass是当前实例的Class对象,相当于Java的getClass().

在Kotlin中ActivityB::class.java是获取ActivityB类的Class对象,相当于Java中的ActivityB.class。

3、启动ActivityA->启动ActivityB->启动ActivityC,taskId打印结果如下:

ActivityA taskId=4163

ActivityB taskId=4164

ActivityC taskId=4163

可以看到ActivityB的taskId是不同于ActivityA 和ActivityC的,这也说明了ActivityB 是在一个单独的栈中的,并且返回栈中只有这一个Activity。

4、在ActivityC中按返回键,返回到ActivityA,再按返回键返回到ActivityB,这是为什么呢?其实很好理解:ActivityA 和ActivityC 在同一个返回栈中,在ActivityC 中按返回键ActivityC 出栈,此时ActivityA就位于栈顶了,ActivityA就展示在界面上了,在ActivityA中再按返回键,这是当前的返回栈已经空了,于是就展示了另一个返回栈栈顶的ActivityB了。
————————————————
版权声明:本文为CSDN博主“保瓶儿”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_31211457/article/details/114052641

Ⅱ 计算机二级考试内容是什么

计算机二级包括二级C,二级C++,二级VB,二级VFP,二级Access,二级Java,二级office。其需要学习的内容如下:

1.二级C:DOS命令,计算机组成原理,多媒体、数据库操作、计算机网络、C语言程序设计、上机考试。

2.二级C++:按照新大纲需要学习的内容有:C++语言概述、C++语言数据类型、运算符和表达式、基本控制语句、数组、指针与引用、函数、类和对象继承、模板等内容。

3.二级VB:按照新大纲,需要学习的内容有:VB基本概念、集成开发环境、可视化编程方法、基本输入输出、常用控件功能及使用、VB控制结构语句等。

4.二级VFP:需要学习的内容有:数据库系统与VFP基础知识、数据库基本操作、结构化查询语言SQL、VFP程序设计、设计器和项目管理器使用等。

5.二级Access:按照新大纲,需要学习的内容有:数据库系统、数据库和表、数据库查询窗体、报表、数据访问页、宏、模块等。

6.二级Java:按照新大纲,需要学习的内容有:JAVA语言概论、JAVA数据类型、运算符和表达式、流程控制、类、数组和字符串操作、异常处理、输入输出及文件操作、线程与对象串行化、编写图形用户界面、applet程序设计:J2SDK的下载和操作、JAVA的应用。

7.二级office:按照新大纲,需要学习的内容有:计算机的基础知识,Word的功能和使用 ,Excel的功能和使用,PowerPoint的功能和使用。

(2)javaweb打印控件扩展阅读:

计算机二级C语言考试时间为每年的3月下旬和9月下旬,分别在12月份和9月份报考。考试题型主要是选择共四十道,每题1分,其中公共基础知识10分(10题),其他知识组合起来共30分(30题);程序填空、程序改错和程序设计共六十分,其中程序填空18分、程序改错18分、程序设计24分。

计算机二级考试的重要性:

许多单位、部门已把掌握一定的计算机知识和应用技能作为人员聘用、职务晋升、职称评定、上岗资格的重要依据之一。鉴于社会的客观需求,经原国家教委批准,原国家教委考试中心于1994年面向社会推出了NCRE,其目的在于以考促学,向社会推广和普及计算机知识。

计算机技术的应用在我国各个领域发展迅速,为了适应知识经济和信息社会发展的需要,操作和应用计算机已成为人们必须掌握的一种基本技能。

参考资料来源:网络—计算机二级考试

Ⅲ android实战培训课程

⑴ 安卓培训主要学习哪儿些内容

每个人准备培训情况和基础都是不一样的,但是看了你的问题之后觉得咱俩的情况还是很相似的,我是去年毕业的,当时我学的是计算机专业,当时在学校的时候开的各门的课程都是以理论基础为主要的,我也不是说大学的教育不好,可是当时的课程一般都是教授级别的给我们讲一般的模式就是老师讲课在上面念PPT我们在下面拍照,等最后考试的时候老师直接给我们划题答案背过基本这一年就这样过去了,技术类的东西是真心没学到,后来华清远见到我们学校和我们学校合作,给我们弄得安卓方面的实训课程,觉得自己欠缺的很多的,也是怕和你这种情况一样找不到理想的工作,所以我就在华清远见进行的安卓培训,当时我们的学习内容主要有以下几点,其实各种的培训班的课程都是大同小异的老师属于一部分的因素最关键的还是要靠自己的。
第一阶段的课程一般都是Java编程开发,这一部分应该会和Java后台有相关联的地方,但是比Java后台简单,这一阶段一般要学习Java语法和Java面向对象思想、Java数据结构及算法、GUI界面编程、Java进程与线程、Java网络通信与流、设计模式、数据库和Javaweb,安卓在这一阶段的学习内容看似和后台关联性很大,但是这一部分我们只学习后台一些基础的东西和日后会用到的东西,我们要把基础奠定好。

第二阶段要学习的内容是安卓基础开发,主要的课程内容为Android界面编程(界面编程是Android入门的核心技术,内容纵多,涉及四大组件之一Activity、Wedget、自定义View、事件处理、动画处理、列表、图片处理、国际化、资源文件、菜单、通知、对话框、Tools/ActionBar/Fragment、样式/主题、Intent。)、进程与线程、服务与广播、数据存储、网络通信、多媒体以及硬件相关,这一阶段更注重安卓入门基础的培训,一定要好好的把握。
接下来学习的内容是一个进阶阶段,主要学习的是安卓的高级开发,一般的课程内容为HOME开发、NDK开发等、地图开发项目发布等等,以上就算是安卓培训的所有学习内容,但是你掌握了学习内容之后还是远远不够的,一般的培训班都会给我们安排项目实战的,这是一种思想的锻炼,我们做什么就要有什么的思维做后台的有做后台的思维,做前端的有做前段的思维,我们学安卓的进行手机端APP开发的就要有安卓的思维,这一阶段也是很重要的,就好比我们在华清远见学完整体的内容之后也参与了一些项目的实战。

我把每一阶袜困段要学习的课程都给你整理了,你可以现在有准备的去看一些基础的视频或者相关的书籍了。

⑵ 我想学习安卓开发,哪个培训机构靠谱呢

没什么好与不好,建议对比师资选择,管理团队拥有平均10年以上IT培训行业从业经验,核心讲师团队由Mars、老罗、饼干等移动互联网传奇名师领衔,以良知教学为本、责任心强,平均8年的执教经验,在业内首屈一指,教学方面可以不用担心。

⑶ 现在的安卓教育培训是真的吗

当然是真的,首先国内移动互联时代是移动应用App的爆发式增长,人们的消费与使回用倾向正逐渐向移动答端转移,这种趋势就如同当初的互联网一样势不可挡。从各项统计来看,现在App的大行其道,正慢慢的吞噬着软件业。都说互联网改变了我们的生活,不过短短的数年时间,带来的却是一整个属于移动端的时代。
其次移动开发行业的人才供不应求,缺口逐渐加大,所以除了专业的开发者,也吸引了一大群尝试择业的在职者和优秀毕业生。与此同时,移动端的教育培训缺口也被打开,一些经典的如Android开发培训课程受到了学员们热烈的追捧。

数据表明,当前Android已经占到移动系统的80%以上。因而越来越多的应届毕业生与在职者从原来的专业或职业中走出来,拥抱IT,拥抱移动互联网这个朝气蓬勃的产业。首选就是学Android开发,因而选择好的线上或线下Android培训机构就显得极为重要。

最后好的Android开发培训课程,必唯伍然来自好的Android开发培训机构。尚硅谷教育通过全日制小班授课与项目实战相结合的形式,全方位的服务学员,专注于移动互联网领域高端课程的研发。

⑷ Android培告山念训课程有什么内容

今后,业界将有两种移动开发课程体系:一种是其他机构Android课程,一种是尚硅谷Android+HTML5混合开发课程。

尚硅谷Android课程全面升级为《Android+HTML5混合开发》,让学员如虎添翼!在原Android课程基础上加入HTML、CSS、JavaScript、React核心,React Native跨平台混合开发、豆瓣搜索项目实战等H5前端技术。

当前,同时掌握“Android原生开发”+“H5跨平台开发”两大核心技术的复合型移动开发人才严重供不应求,薪资节节攀升,就业及未来职业发展都极具竞争力。

⑸ 安卓系统 培训 有什么课题可以选

只要写GUI开发就可以了,这本身就很深奥了。可以从以下着眼: 1.GUI框架 2.各个控键的重复使用 3.高扩展性 4.性能优化 可以参考一下《Java Swing ...

⑹ 安卓培训多少钱,安卓培训课程有哪些

Android培训周期一般都是4个月,至于培训费用大部分培训机构的收费标准都不相上下,部分Android高端培训费用会偏高一点,费用2W+。选择Android培训除了看培训机构外也要看自身条件,适合参加什么样的培训,例如普通还是高端,普通的Android培训零基础也可以,但高端Android培训就需要计算机语言基础了。

好程序员Android高端班课程,是一套涵盖 Java 语言强化、Java Web 开发、Android 应用开发、Android 游戏开发的专业课程。本套课程真正围绕Android知识体系制订,绝非由Java EE课程、Java ME课程或者Symbian课程改造而成。每一阶段课程涵盖多个实战项目,每个知识点均对应项目中实际功能,学习新知识的同时不断向项目中添加新功能,独特的教学方法帮助学员强化学习目标,迅速提升学习能力。致力于培养Android 高端开发人才,旨在培养真正的 Android 应用和游戏开发能力的高素质人才,学员毕业即具备行业前沿开发技术。
第一阶段 Java面向对象高级编程——java编程语法进阶
该阶段课程重点讲解了面向对象设计原则与设计模式;智能家居之远程监控。
Java面向对象编程
1、面向对象设计原则
2、面向对象设计模式概要
3、面向对象设计模式a.创建型设计模式b.结构型设计模式c.行为模式4、数据结构与常用算法
第二阶段 高级JDK API开发技术 —— Java Web编程
该阶段课程重点讲解了JDK当中的高级API的使用方法,包括新的并发线程库和反射机制。手机安全卫士
Java Web编程
1、并发线程库介绍
2、线程本地变量的使用方法
3、信号量与可重入锁
4、读写锁的使用方法
5、阻塞队列与同步 *** 库使用方法
6、Java反射机制介绍
7、Class、Field和Method的使用方法
8、动态代理模式的使用方法
9、Java框架开发原理
第三阶段 Android基础阶段大纲
一、UI基础
1.Android环境搭建及工程目录介绍:1.1 Android开发(版本:SDK21及以上版本)环境搭建1.2 Android发展史、移动设备操作系统、四层系统架构等理论知识1.3 HelloWorld程序1.4 adb shell简介(install uninstall)
2.常用UI布局及主要控件2.1 LinearLayout2.2 RelativeLayout2.3 FrameLayout2.4 GridLayout2.5 TextView基本用法
3.表单UI控件及相应控件的事件处理3.1 EditText、Button、ImageView3.2 RadioButton及RadioGroup的用法3.3 CheckBox的多选效果及监听3.4 Toast的基本用法
4.Spinner、AutoCompleteTextView、ScrollView及适配器、数组资源4.1 Spinner4.2 适配器4.3 数组资源4.4 AutoCompleteTextView4.5 ScrollView4.6 ProgressBar、SeekBar、RatingBar
5.UI美化及Android资源5.1 Style的简单用法5.2 Android资源汇总
二、应用核心组件初识
1.Activity生命周期及页面跳转传值1.1 Activity的声明和使用1.2 Activity生命周期1.3 Activity现场保护1.4 Activity基本页面跳转及传值1.5 Activity具有返回值的页面跳转
2.Activity启动模式及Intent七大属性2.1 Task和Back Stack的基本概念2.2 Activity的启动模式2.3 Intent属性的特点及用法
3.AsyncTask异步任务3.1 使用异步任务的必要性3.2 异步任务的用法
4.ListView基本用法及适配器介绍4.1 ListView基本用法4.2 SimpleAdapter4.3 BaseAdapter
5.ListView优化及分页加载数据、GridView加载网络图片、ExpandableListView5.1 ListView优化5.2 ListView滚动监听实现分页加载数据5.3 GridView加载图片
三、数据存储
1.菜单及对话框1.1 OptionsMenu1.2 ContextMenu1.3 PopupMenu1.4 PopupWindow1.5 AlertDialog1.6 ProgressDialog1.7 列表对话框1.8 自定义Dialog
2.数据存储2.1 SharedPreferences2.2 内部存储2.3 外部存储2.4 存储Bitmap图片到外部存储
3.SQLite数据库与CursorAdapter适配器3.1 回顾SQLite3.2 SQLiteOpenHelper的用法3.3 CursorAdapter
4.ContentProvider4.1 ContentResolver实现系统数据库的操作4.2 自定义ContentProvider
5.Loader5.1 CursorLoader的用法5.2 AsyncTaskLoader加载本地数据
四、移动开发主流界面实现
1.动画资源1.1 帧动画1.2 补间动画1.3 属性动画
2.Fragment2.1 Fragment基本用法2.2 Fragment传值2.3 Fragment性能优化
3.ViewPager3.1 ViewPager与适配器3.2 ViewPager加载网络图片3.3 PagerAdapter的优化
4.书签导航4.1 书签导航多种实现方式(无需代码实现)4.2 RadioGroup + ViewPager + Fragment实现导航4.3 HorizontalScrollView + ViewPager + Fragment实现导航
5.Handler、Looper消息传递机制5.1 Handler、Looper消息传递机制的原理5.2 Handler、Looper源码
五、应用核心组件进阶(Android Studio开发环境教学)
1.ActionBar (Action View、SearchView)+ ToolBar1.1 ActionBar1.2 ToolBar
2.BroadcastReceiver及Notification2.1 Notification (普通通知、大视图通知、进度条通知、自定义通知)2.2 广播接收器2.3 自定义发送广播
3.Service基础3.1 Service介绍3.2 Start Service3.3 IntentService3.4 Bind Service3.5 两种服务混合使用实现MediaPlayer音乐播放
4.跨进程的Service4.1 AIDL4.2 Messenger
5.LruCache与Bitmap二次采样、WebView与HTML5混合开发5.1 LruCache5.2 二次采样5.3 WebView5.4 HTML5混合开发
六、View深入探究
1.网络地图1.1 网络地图基本用法1.2 网络地图搜索
2. 事件分发消费机制2.1 事件分发消费机制原理2.2 事件分发消费机制的应用场景
3.自定义View(一)3.1 自定义View介绍3.2 自绘制的自定义View
4.自定义View(二)4.1 具有接口回调的自定义View4.2 继承于ViewGroup的自定义View
5.机型适配及SVN搭建5.1 机型适配介绍5.2 屏幕相关重要概念回顾5.3 机型适配的解决方案5.4 SVN搭建
第四阶段 Android项目实战阶段大纲
一、项目实战第一阶段
1.TabLayout及SlidingPaneLayout1.1 TabLayout(5.0Material Design新技术)与ViewPager配合自定义Tab1.2 SlidingPaneLayout左侧或右侧滑动1.3 NavigationView(5.0Material Design新技术)HeaderLayoutMenu xml配置Navigation监听事件
2.okHttp网络访问框架及Picasso2.1 okHttp框架的介绍2.2 okHttp框架的用法Http请求方法:get,post同步请求,异步请求(回调在非UI线程中)2.3 Picasso加载网络图片的用法简单图片请求Picasso通用配置:内存缓存大小,磁盘缓存大小及位置图片加载配置:下载尺寸,填充模式,加载中图片,错误图片2.4 第三方侧滑菜单:SlidingMenu菜单设置
3.Fresco(壁画异步加载图片框架)3.1 Fresco框架的介绍3.2 Fresco框架的用法(中文文档)简单图片请求Fresco通用配置:内存缓存大小,磁盘缓存大小及位置图片加载配置:下载尺寸,填充模式,加载中图片,错误图片,顶层,底层,图片变形
4.PullToRefresh、SwipeRefreshLayout及Ultra PullToRefresh4.1 PullToRefresh框架配置事件回调多种控件PullToRefreshBase重写4.2 SwipeRefreshLayout配置事件回调4.3 Ultra PullToRefresh(中文文档)配置事件回调多种下拉效果
5.打包(按渠道打包)、混淆及数字签名5.1 按渠道打包基本打包多渠道:资源,清单文件,代码,调试5.2 混淆开启混淆混淆配置:保留类,保留方法,忽略错误5.3 数字签名生成keystore配置签名
二、项目实战第二阶段——Android新技术
1.RecyclerView1.1 5.0新技术介绍(Material Design)设计理念、新增控件1.2 RecyclerView的用法、CardView的用法1.3 RecyclerView与ListView比较
2.5.0Material Design新技术2.1 CoordinatorLayoutToolbar与Layout2.2 TextInputLayout错误监听2.3 Snackbar监听Action2.4 FloatingActionButton属性介绍onClick
3.媒体播放器3.1 视频播放器VideoView3.2 SurfaceView及MediaPlayerSurfaceView介绍与View区别SurfaceHolder与CallBackMediaPlayer.setDisplayMediaPlayer加载网络视频3.3 获取视频缩略图使用Fresco3.4 ListView的item实现视频播放Item显示视频单Item播放Item滚出时停止播放3.5 播放器全屏显示与恢复3.6 Vitamio(维他密播放器)
4.摄像头、传感器、ZXing二维码4.1 利用Intent实现摄像头两种模式,存文件和缩略图4.2 加速度传感器实现《摇一摇》传感器获取传感器监听注册加速度传感 摇一摇4.3 ZXing实现生成二维码(容错等级、二维码正中心Logo)生成BitMatrix转Bitmap容错等级中心Logo4.4 ZXing实现二维码扫描导包
5.JPush推送、ShareSDK一键分享及第三方登录5.1 JPush极光推送的原理及用法通知推送消息推送推送原理5.2 ShareSDK一键分享及第三方登录注册集成分享第三方登录APIOAuth介绍
三、项目实战第三阶段
1.加密解密1.1 对称加密(AES 、DES、3DES)1.2 非对称加密(RSA)1.3 消息摘要(MD5、 SHA-1 )1.4 编码解码(Base64、URLEncode、URLDecode)
2.网络支付2.1 Alipay支付2.2 微信支付
3.ButterKnife(反转注入框架)、EventBus、ActiveAndroid(数据库ORM框架)及Retrofit(网络访问框架)3.1 ButterKnife(反转注入框架)3.2 EventBus的用法3.3 ActiveAndroid(数据库ORM框架)3.4 Retrofit(网络访问框架)
4.项目实战需知4.1Git、UML4.2XMPP4.3常见面试题4.4移动端与服务器端的交互流程4.5移动开发工程师与web工程师工作配合的流程4.6面试常用技巧(面试禁忌)4.7开发规范(代码规范)
第五阶段 就业指导及职业规划

⑺ 求比较好的android培训的课程

可以看看android培训学习课程大纲了解下,课程分阶段进行,不同阶段学习的详细内容可以看下。

第一阶段:Android编程基础--JavaSE阶段()
Java语言入门
1、介绍计算机的基本使用和DOS常用命令 2、Java概述和开发环境 3、关键字、标识符、常量与变量 4、数据类型和运算符
5、流程控制与数组 6、方法的定义及格式、正确的调用方法
OOP编程
1、面向对象编程(OOP)、类和对象 2、成员变量和局部变量、方法(方法重载)、匿名对象 3、构造方法、封装、this关键字
4、方法参数的传递(传值、传址)、static关键字 5、继承、super关键字、方法的重写、访问修饰符权限 6、抽象类与抽象方法、接口
7、多态(对象的多态,对象的转型) 内部类和常用的设计模式
Java核心API
1、异常、异常处理,自定义异常
2、java基础类库:Object类、Scanner类、String类、StringBuffer类、
StringBuilder类、Arrays类、基本包装类(拆箱、装箱)、正则表达式、Math类、Random类、System类、Date类、DateFormate类、Calendar类,及其常用方法
3、 *** 框架:Collcetion接口、List接口、Set接口、Iterator接口、Map接口
4、List接口:ArrayList类、LinkedList类、Vector类、Stack类 Set接口:HashSet类、TreeSet类、Map接口: HashMap类、HashTable类、LinkedHashMap类、TreeMap类
5、泛型的使用
6、File类、File类的常用方法
7、I/O操作:IO流的种类,IO流的使用(字节输入/输出流、字符输入/输出流、 字节(字符)缓存流、转换流、打印流、内存流、对象流、随机读取流) 多线程的使用(Thread类的常用方法、线程的生命周期,线程的实现、线程的安全问题)
网络与Web应用
1、Socket编程
2、HTML(结构,form表单)、Servlet简介
3、SQLite数据库的使用
4、HTTP网络访问(URL类、HttpURLConnection类、HttpClient类)
5、JSON解析(JSON的格式、JSON的常用解析:JSON、Gson、fastJson)
6、XML解析(XML简介、两种常用的解析方式: PULL解析、SAX解析) 反射机制

第二阶段:Android开发初级阶段

UI基础
1、Android发展史及四层系统架构
2、Android环境搭建及SDK介绍
3、创建第一个Android程序
4、Eclipse开发APP的目录结构
5、Android Studio开发APP的目录结构
6、adb shell简介
7、View常用属性
8、Android长度相关单位的概念、区别及转换运算(sp、dp、dip、px、dpi)
9、LinearLayout及RelativeLayout特有属性
10、FrameLayout及GridLayout特有属性
11、TextView、EditText、Button、ImageView基本用法
12、RadioButton及RadioGroup的用法
13、CheckBox的多选效果及监听
14、Spinner常用属性及适配器
15、AutoCompleteTextView、ScrollView、ProgressBar、SeekBar、RatingBar的基本用法
16、Style的作用及基本用法
17、Android常用资源(id、字符串资源、颜色资源、尺寸资源、布局资源、数组资源、样式和主题资源 、菜单资源、图像资源、动画资源、原生xml资源、raw资源、特殊Drawable资源、自定义属性资源)
应用核心组件初识
1、Activity生命周期及页面跳转传值
2、ctivity启动模式及Intent七大属性
3、AsyncTask异步任务 ListView常用属性、方法及监听器ListView与ArrayAdapter的使用
4、ListView与SimpleAdapter的使用
5、SimpleAdapter与ViewBinder结合使用
6、ListView与BaseAdapter
7、ListView优化(内存空间优化、运行时间优化、ListView中item多布局的复用)
8、ListView滚动监听实现分页加载数据
9、GridView加载图片
10、ExpandableListView的用法
数据存储及相关组件
1、菜单及对话框 (OptionsMenu、ContextMenu、PopupMenu、PopupWindow、AlertDialog、ProgressDialog、列表对话框、自定义Dialog)
2、SharedPreferences
3、内部存储的概念及用法
4、外部存储的概念、存储目录及用法
5、存储Bitmap图片到外部存储
6、SQLite数据库与CursorAdapter适配器
7、ContentProvider与ContentResolver的概念及关系
8、ContentResolver实现系统数据的操作(联系人、媒体库文件、通话记录、短信记录)
9、自定义ContentProvider
10、CursorLoader的使用场景及用法
11、AsyncTaskLoader的用法以及与CursorLoader的对比
移动开发主流界面实现
1、动画资源(帧动画、补间动画、属性动画)
2、Fragment基本用法
3、Fragment传值
4、Fragment性能优化
5、EventBus的作用以及在Fragment中的应用
6、ViewPager基本使用(ViewPager实现欢迎引导页)
7、ViewPager的适配器PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter
8、ViewPager加载网络图片
9、PagerAdapter优化
10、TAB书签导航的多种实现方式
11、RadioGroup + ViewPager + Fragment实现TAB导航HorizontalScrollView + ViewPager + Fragment实现TAB导航
应用核心组件进阶
1、ActionBar基本用法(ActionBar显示和隐藏、ActionBar添加动作项、ActionBar启动图标导航、分离式ActionBar、
ActionBar导航模式、ActionBar现场保护 Action View的介绍、ActionProvider)
2、ActionBar上SearchView的用法
3、ToolBar的基本用法
4、ToolBar的Standalone用法
5、Notification (普通通知、大视图通知、进度条通知、自定义通知)
6、广播接收器的概念、作用、分类及注册
7、广播接收器实现系统监听(开机监听、短信监听、电话监听、耳机插拔监听、网络状态改变监听、电量改变监听)
8、自定义发送广播(发送无序广播、有序广播、发送本地广播、注册本地广播接收器 )
9、Service的概念、分类、生命周期、注册及使用场景
10、Start Service实现音乐播放器
11、IntentService实现网络视频文件下载
12、DownloadManager实现网络视频文件下载
13、Bind Service实现音乐播放器
14、两种服务混合使用实现MediaPlayer音乐播放
15、AIDL跨进程Service的概念及用法
16、Messenger的概念及用法
17、Handler、Looper消息传递机制的原理
18、Handler、Looper源码分析
19、LruCache与Bitmap二次采样
20、WebView基本用法以及与5交互
View深入探究
1、事件分发消费机制的原理分析及应用场景
2、自定义View的常规做法
3、自绘制的自定义View(画布Canvas、画笔Paint、重写onDraw()方法、重写onMeasure()方法、自定义属性)
4、组合式自定义View
5、具有手势监听的自定义View
6、继承于ViewGroup的自定义布局
7、Android中机型适配出现的原因(系统碎片和屏幕碎片)
8、机型适配的解决方案(屏幕适配:相对布局、尺寸限定符、最小宽度限定符、屏幕方向限定符、自动拉伸位图,版本适配,语言自适应)

第三阶段:Android开发高级阶段

常用第三方框架
1、网络地图(网络地图API及配置、网络地图定位及覆盖物、网络POI检索、出行线路规划、公交路线查询)
2、第三方侧滑菜单SlidingMenu及与原生DrawerLayout、SlidingPaneLayout的对比
3、UIL(universal-image-loader)图片加载框架
4、okHttp网络访问框架
5、Picasso加载网络图片框架
6、Fresco加载图片框架
7、xUtils3、0框架
8、PullToRefresh下拉刷新框架
9、Ultra PullToRefresh下拉刷新框架
10、ButterKnife(反转注入框架)
11、ActiveAndroid(数据库ORM框架)
12、Retrofit(网络访问框架)
Android5.0新技术
1、RecyclerView及CardView
2、ExpandableRecyclerView CoordinatorLayout协调AppBarLayout、CollapsingToolbarLayout、NestedScrollView、 Toolbar、RecyclerView等控件实现特殊滚动效果
3、TextInputLayout与TextWatcher
4、FloatingActionButton
5、Snackbar
6、TabLayout介绍以及与ViewPager、Fragment配合实现TAB导航效果
7、NavigationView介绍以及结合DrawerLayout使用SwipeRefreshLayout下拉刷新控件
其他高级技术
1、媒体播放器(MediaPlayer、VideoView、SurfaceView及MediaPlayer)
2、Vitamio第三方播放器
3、摄像头
4、传感器
5、ZXing二维码
6、JPush极光推送
7、ShareSDK一键分享及
8、第三方登录
9、Alipay支付及微信支付
10、加密解密(编码解码、对称加密、非对称加密、消息摘要)/p>

第四阶段:Android项目实战阶段
APP开发
1、商业应用项目模拟(项目结构分析及设计、UML、Git、SVN、打包混淆及数字签名)
2、移动开发工程师与web工程师工作配合的流程
3、常见面试题
4、面试常用技巧(面试禁忌)
5、开发规范(代码规范)

⑻ google android官方培训课程中文版这个学完够吗

不够啊,你在多拿几个项目练练手

Ⅳ js打印问题,急!!!!!

对JS的打印方法总结一下,侍蠢方便日后查阅。

一.用JS自带函数打印

直接调用
Java代码 复制代码

1. <a href="数启javascript:window.print();">打印</a>

<a href="javascript:window.print();">打印</a>

二.IEWebBrowser组件

介绍

http://support.microsoft.com/default.aspx?scid=kb%3BEN-US%3BQ267240#top
http://support.microsoft.com/kb/q247671/#appliesto

Java代码 复制代码

1. <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>
2. <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>
3. <input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>
4. <input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>
5. <input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>
6. <input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>
7. <input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览>
8. <input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>
9. <input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>
10. <input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>
11. <input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>
12. <input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>

<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>
<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>
<input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>老毕陪
<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览>
<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>
<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>
<input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>
<input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>
<input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>

三.使用ScriptX.cab控件

1.下载ScriptX.cab控件

官网http://www.meadroid.com/scriptx/index.asp

2.使用object元素,修改codebase,classid的值

这里调用控件ScriptX.cab
Java代码 复制代码

1. <OBJECT id="factory" style="DISPLAY: none" codeBase="${rootUrl}js/smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

<OBJECT id="factory" style="DISPLAY: none" codeBase="${rootUrl}js/smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

这段代码用来加载cab文件,clsid和codebase必须要和你下载的cab中的信息对应,否则组件会加载错误,这两项其实不难找,只要你用winrar打开你下载的cab文件,然后找到扩展名是.inf的文件,然后打开之,就能看到了。

3.调用控件脚本

Print.js文件
Java代码 复制代码

1. function setPrintBase(headerText,footerText,rootUrl) {
2.
3. // -- advanced features ,未曾使用过,有待确认。
4.
5. //factory.printing.SetMarginMeasure(2); // measure margins in inches
6.
7. //factory.SetPageRange(false, 1, 3);// need pages from 1 to 3
8.
9. //factory.printing.printer = "HP DeskJet 870C";
10.
11. //factory.printing.copies = 2;
12.
13. //factory.printing.collate = true;
14.
15. //factory.printing.paperSize = "A4";
16.
17. //factory.printing.paperSource = "Manual feed"
18.
19. var header = (headerText==null||headerText=="")?'默认页眉':headerText;
20.
21. var footer = (footerText==null||footerText=="")?'默认页角':footerText;
22.
23. factory.printing.header = "&b"+header+"&b" ;
24.
25. factory.printing.footer = "&b"+footer;
26.
27. factory.printing.portrait = true;
28.
29. factory.printing.leftMargin =10.00;
30.
31. factory.printing.topMargin =10.00;
32.
33. factory.printing.rightMargin =10.00;
34.
35. factory.printing.bottomMargin =10.00;
36.
37. }

function setPrintBase(headerText,footerText,rootUrl) {

// -- advanced features ,未曾使用过,有待确认。

//factory.printing.SetMarginMeasure(2); // measure margins in inches

//factory.SetPageRange(false, 1, 3);// need pages from 1 to 3

//factory.printing.printer = "HP DeskJet 870C";

//factory.printing.copies = 2;

//factory.printing.collate = true;

//factory.printing.paperSize = "A4";

//factory.printing.paperSource = "Manual feed"

var header = (headerText==null||headerText=="")?'默认页眉':headerText;

var footer = (footerText==null||footerText=="")?'默认页角':footerText;

factory.printing.header = "&b"+header+"&b" ;

factory.printing.footer = "&b"+footer;

factory.printing.portrait = true;

factory.printing.leftMargin =10.00;

factory.printing.topMargin =10.00;

factory.printing.rightMargin =10.00;

factory.printing.bottomMargin =10.00;

}

例子
Java代码 复制代码

1. <%@ page contentType="text/html;charset=GBK"%>
2.
3. <html>
4. <head>
5. <meta http-equiv="imagetoolbar" content="no">
6. <script language="javascript" src="print.js"></script>
7. <style media="print">
8. .Noprint {DISPLAY: none;}
9. </style>
10. <title>打印测试</title>
11. </head>
12. <OBJECT id="factory" style="DISPLAY: none" codeBase="smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>
13.
14. <script defer>
15. function window.onload() {
16. setPrintBase('页眉','页脚');
17. }
18. </script>
19. <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
20. <center class="Noprint">
21. <input type=button value="打印" onclick="factory.printing.Print(true)">
22. <input type=button value="页面设置" onclick="factory.printing.PageSetup()">
23. <input type=button value="打印预览" onclick="factory.printing.Preview()">
24. <input type="button" value="关闭" onclick="window.close();">
25. </center>
26. <center>
27. <table width="100%" border="0" cellpadding="0" cellspacing="0">
28. <tr><td align="center"><b>内容</b></td></tr>
29. </table>
30. </center>
31. </body>
32. </html>

<%@ page contentType="text/html;charset=GBK"%>

<html>
<head>
<meta http-equiv="imagetoolbar" content="no">
<script language="javascript" src="print.js"></script>
<style media="print">
.Noprint {DISPLAY: none;}
</style>
<title>打印测试</title>
</head>
<OBJECT id="factory" style="DISPLAY: none" codeBase="smsx.cab#VVersion=6,3,435,20" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>

<script defer>
function window.onload() {
setPrintBase('页眉','页脚');
}
</script>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<center class="Noprint">
<input type=button value="打印" onclick="factory.printing.Print(true)">
<input type=button value="页面设置" onclick="factory.printing.PageSetup()">
<input type=button value="打印预览" onclick="factory.printing.Preview()">
<input type="button" value="关闭" onclick="window.close();">
</center>
<center>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td align="center"><b>内容</b></td></tr>
</table>
</center>
</body>
</html>

四.对比

1.Window.print调用方便,但功能简单

2.功能更强大,但使用IEWebBrowser有时会报JS没有权限的错误。

3.ScriptX控件功能也比较强大,目前在使用这种方式。

这里的也不错啊,有打印到 word的和excel

http://hi..com/afei0211/blog/item/20523955ca8bebc2b745ae98.html

http://hi..com/hongz1125/blog/item/0152bcfd84ce1e1008244d5c.html

.NET环境下的
http://blog.csdn.net/flygoldfish/archive/2004/08/17/77208.aspx

Ⅳ 如何在java web项目中实现打印功能,比如一

你可以了解下jatoolsprint 目前所遇到的打印问题都可以解决。
不过要装一个控件。大小60K.
这是他们网上的介绍。你可以了解下。

jatoolsPrinter (杰表.打印控件)是一款实现网页套打的专用工具。作为web应用开发者,我们经常会遇到在浏览器中打印报表、票据的需求,这些需求浏览器本身的打印功能一般不能满足, 如精确分页,套打等。这就需要有一种能解决常见的浏览器端打印问题的软件工具,这也是 jatoolsPrinter 的研发背景。

jatoolsPrinter 的特点是可以直接对web页面进行精确的分页打印。jatoolsPrinter 通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。 具体功能有:

支持设置打印参数,指定输出打印机、纸张类型,打印方向(横、竖)等 。
支持html格式的页脚、页眉设置,也就是说,页脚页眉可设置图片等,如公司logo。
支持程序分页与自动分页。
支持打印参数自动保留,待下一次打印同一票据时,自动设置,这使客户端也可以控制打印参数。
支持打印预览,支持预览时指定页、指定份数打印。
支持直接打印指定票据的URL。
支持票据及其附件的批量打印。
支持取得本机中的可用打印机,可用纸张类型列表,帮您设计出更友好的参数设置界面。
支持回调,可以帮助您在打印后自动处理有关事务,比如打印后自动关闭窗口、自动递交表单数据等。
支持票据套打时,底图仅在打印预览时显示,不输出到打印机。
小巧,整个控件只有60K。不需要额外的软件包支持。
与您项目采用的技术标准无关,J2EE、.NET 项目均可。
IE 5.5+ 中适用。

Ⅵ java(web)打印 通常是怎么实现的

Web系统中,打印功能一直是个老大难问题,因此产生了很多第三方的控件,多数要收费,而且跟自己的系统结合有一定的麻烦。系统采用J2EE技术,jsp打印问题同样存在于OA中。

打印方式有三种:一是不经过任何修改,直接调用javascript中的window.print()打印。二根据客户要求的报表格式,编写相应格式的html,装载数据打印,同样调用window.print()打印,只是对html的格式要求比较高。三是通过客户提供的word格式,通过xml配置文件与数据库的数据进行关联,自动装载数据到word中打印,这里是利用客户端的word进行打印。

第一种几乎不用编写程序,最简单快捷,这里会遇到几个问题,只能打印表单内容,按钮不希望打印出来;页眉页脚不想打印出来;IE的titile不想打印出来。
解决办法:把button放在一个table或者div里,打印的时候隐藏,完成后显示就可以。系统中的javascript打印代码如下:
function Print() {
var tit = document.title;
document.title = "";
table1.style.display = "none";
window.print();
document.title = tit;
table1.style.display = "";
}
不过只能起到打印的目的,打印的效果一般比较土。不管怎么说,可以最快的让系统的大部分模块都有打印的功能。

第二种方式必须根据每个报表的格式进行定制html和java程序开发,会花比较多的时间。要注意的是对html中table的样式控制,在IE中浏览看起来很细的边框,打印出来有些线条会比较粗,有些线条又会比较细,阴阳怪气的很难看。
在table中直接用bordercolor会让线条显得很粗,用bordercolorlight,bordercolordark配合使用可以显示出秀气的线条。
<html>
<head></head>
<body>
<table border="1" bordercolorlight="red" bordercolordark="#FFFFFF" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td>姓名</td>
<td>所属部门</td>
</tr>
<tr>
<td>陈</td>
<td>技术部</td>
</tr>
</tbody>
</table>
</body>
</html>
比如以上代码,在IE中看起来线条一样大小,还是比较秀气。不要高兴的太早,打印出来的效果不象在IE中看到的那样,边框虽细,内线却很粗!原因是每个td都有边框,td与td的交接处就会有线条重叠,虽然IE看起来没有,可是打印的时候就会显示出来。
这个问题的解决办法是控制每一个td的样式,对重叠的地方进行border-bottom:1px之类的控制。
这个方案比较消耗精力,而且打印的时候很难控制分页,更不能随时按照客户的需要调整字体边框颜色等。

第三种方案:从服务器端生成word、excel等文档,发送到浏览器进行打印
实现过程:先将需要打印的数据导入到word或者excel中,再利用word或者excel的打印功能来实现web打印。
下面以excel为例实现如何打印的过程
将网页中数据导入excel中的方法有很多,这里先介绍一种,利用ActiveX控件的方式,即 Excel.Application, 这个控件是MS为excel提供的编程接口,在很多种编程语言种都可以通过该接口来操纵excel表格。
下面用javascript脚本来实现一个简单的例子。
<script language = "javascript">
function ExcelPrint() {
var excelApp; //存放Excel对象
var excelBook; //存放Excel工件簿文件
var excelSheet; //存放Excel活动工作表
try {
excelApp = new ActiveXObject("Excel. Application"); //创建Excel对象}
catch(e) {
alert("请启用ActiveX控件设置!");
return;
}
excelBook = excelApp.Workbooks.Add(); //创建Excel工作簿文件
excelSheet = excelBook.ActiveSheet; //激活Excel工作表
var rowLen = printTable.rows.length; //table对象的行数
for (var i = 0; i < rowLen; i++) {
var colLen = printTable.rows(i).cells.length; //table对象的列数
for (var j = 0; j < colLen; j++) //为Excel表的单元格赋值
excelSheet.Cells(i + 1, j + 1).value = printTable.rows(i).cells(j).innerText;
} //将表格中的每个单元格的innerText导入到excel的单元格中
excelApp.Visible = true; //设置Excel对象可见
excelSheet.PrintOut(); //打印工作表
excelBook.Close(true); //关闭文档
excelApp.Quit(); //结束excel对象
excelApp = null; //释放excel对象
}
}

</script>
注意:
运行该程序的前提是 IE要允许对没有标记为安全的Activex控件进行初始化和脚本运行。设置方法如下:
打开控制面板→Internet选项→安全性→自定义级别→对没有标记为安全的ActiveX控件进行初始化和脚本运行→选中启用,这样我们的程序就可以运行了。如果没有启用该ActiveX控件设置,那么程序在执行创建Excel对象时会抛出一个异常,这时可以通过catch()语句来捕获这个异常,并且做出相应的处理。
运行该程序必须客户端安装了MS EXCEL,否则Activex驱动不了。

Ⅶ 哪位用Apache的xml-security-1

这个多了去了 ,apache 绝对是 开源里面的领头羊

for example:

分类 项目名 说明 开发语言
服务器
(共20) Apache HTTP Server 全球第一HTTP服务器 C/C++
Tomcat Java的Web服务器 Java
James 邮件服务器 Java
SpamAssassin 反垃圾邮件 C/C++
Perl Apache的Perl编程语言支持 C/C++
Tcl TCL脚本语言 C/C++
Directory Server 超级目录服务器 Java
Axis WebServic服务器 Java
Kanla Axis中WS-Coordination、WS-AtomicTransaction、WS-BusinessActivity协议的实现 Java
Muse Axis中WS-ResourceFramework (WSRF), WS-BaseNotification (WSN), and WS-DistributedManagement (WSDM) 标准的实现(该项目Logo是个不认识的古汉字) Java
Pubscribe Web Services Notification (WSN) 标准实现 Java
Sandesha WS-ReliableMessaging 标准实现 Java
WSS4J WS-Security 标准实现 Java
WSRF Web Services Resource Framework 标准实现 Java
Addressing WebService的WS-Addressing标准(IBM、微软、BEA发布)实现 Java
XML Security XML签名与加密标准的Java、C++实现 Java/C++
jUDDI UDDI的Java实现 Java
XML-RPC XML-RPC实现 Java
Derby 纯Java做的关系数据库 Java
Xindice XML数据库 Java

开发工具(共5) Ant 自动编译 Java
Maven 项目管理工具,比Ant强大,支持插件开发 Java
Gump 每日集成工具,支持Ant、Maven Python
JMeter Web应用性能测试 Java
DdlUtils 用XML来定义DDL Java

Web开发框架(共19) Struts MVC的Web开发框架 Java
Cocoon Web开发框架,基于可运行的XML管道语言 Java
FOP XSL-FO 打印与输出解决方案,基于Java Java
AxKit 基于XML的Web发布 Java
Tapestry Web开瞎游贺姿发框架 Java
Turbine Web开发框架 Java
Shale 基于JSF的Web开发框架 Java
MyFaces 第一个开源的JSF实现 Java
Beehive 基于Structs的J2EE框架,简化J2EE编程;含Web界面、WebService开发框架 Java
Velocity 模板引擎 Java
Portals 门户解决方案 Java
Cactus Web开发测试框架 Java
Forrest 基于Cocoon的Web发布解决方案 Java
Slide 内容管理,支持WebDAV Java
Jackrabbit 内容库,用于内容管理 Java
Lenya 内容管理,支持版本管理、工作流、所见所得编辑器 Java
Xang 基于JavaScript进行动态Web开发 Java
Xindice 纯XML数据库 Java
JCS 分布式Cache系统(Java Caching System) Java

容器(共7) Geronimo J2EE容器,类似JBoss Java
iBATIS 简单OR映射,有.NET版本 Java/C#
Torque OR映射 Java
ORB ObjectRelationalBridge,OR映射 Java
JDO JDO标准的一个实现 Java
HiveMind 类似Spring的东西,微内核DI容器 Java
Excalibur IoC容器磨拍销 Java

组件(共82) APR 不同操作系统间可移植运行时库 C/C++
Regexp Java正则表达式 Java
ORO Perl风格的正则表达式 Java
Xerces XML解析,Java/C两种版本 Java/C++
Crimson XML解析器 Java
AXIOM 更高效的DOM实现 Java
Lucene 全文检索,有.NET版本 Java/C#
Logging 不仅Log4j,各个语言的版本都有了 Java/C++/Perl/C#
XMLBeans XML转对象 Java
JaxMe Java/XML绑定的实现 Java
Taglibs JSP Tag库 Java
HttpComponents HTTP访问控件 Java
ECS 辅助生成标签(Element Construction Set) Java
WSIF WebService调用(Web Services Invocation Framework) Java
SOAP SOAP标准实现 Java
Woden WSDL书写工具 Java
Tuscany 简化SOA开发 Java
MIRAE 让手机支持基于XML的服务 Java
BSF 脚本语言框架(Bean Scripting Framework),支持JavaScript等多种脚本语言 Java
BCEL 用于直接生成字节码(Byte Code Engineering Library) Java
POI 存取Office文档 Java
Batik JAVA的SVG实现 Java

Attributes 访问Java 1.5语言中定义的meta 这些项目都在jakarta commons中,都是Java的
BeanUtils 反射支持
Betwixt XML/JavaBean转换
Chain 职责链模式实现
CLI 命令行参数解析
Codec 通用加密/加密算法
Collections Java容器类完善扩充
Configuration 各种来源配置文件存取
Daemon Java模拟Unix的Daemon
DBCP 数据链连接池
DbUtils JDBC辅助类
Digester XML到Java对象映射工具
Discovery 根据名称来查找资源
EL JSP 2.0 表达式标准实现
Email 发送Email类
FileUpload 文件上传辅助类
HttpClient HTTP客户端
IO IO操作辅助类
Jelly 基于XML的脚本引擎
Jexl JSTL 表达式语言扩展
JXPath 用XPath语言来操作对象的辅助类
Lang java.lang.类扩充
Launcher 跨平台Java应用启动器
Logging 不同Log实现的封装
Math 数学、统计辅助类
Modeler 创建兼容JMX标准的MBeans
Net 各种网络协议实现
Pool 对象池
Primitives 很小的Java原始对象类型操作辅助类
SCXML 状态图XML标准实现
Transaction 多层次容器、文件操作事务支持
Validator 用XML定义校验器和校验规则
VFS 虚拟文件系统用于操作FTP、SMB、Zip等

Compress tar、zip、bzip2压缩格式文件操作 这些项目都在jakarta commons中的Sandbox中
CSV CSV文件格式支持
Exec 外部进程执行和环境设置辅助类
Finder 模拟Unix find命令
I18n 国际化辅助类
Id 生成ID辅助类
Javaflow 应用状态管理
JCI Java编译器接口
OpenPGP OpenPGP封装
Pipeline 管道辅助类用于并行或者顺序操作数据
Proxy 动态代码生成辅助类

Cache 对象缓存服务 这些项目都在jakarta commons中的Dormant(睡眠)中
Clazz class操作和反射操作
Contract 契约编程用到Java中
Convert Java对象类西转换辅助类
Events 事件管理容器
Feedparser RSS和Atom实现
Functor 用对象方式来操作函数
JJar Jar操作
Latka HTTP功能测试
Mapper 简单封装后可以选择不同的对象映射实现
Messenger JMS用于Web开发中的辅助类
Resources 国际化资源信息查找
Scaffold Web应用开发工具
ThreadPool 线程池
Workflow 工作流管理系统框架
XMLIO XML配置快速简便导入