《Android程序设计》期末总结
更新时间:2024-04-02 23:01:01 阅读量: 综合文库 文档下载
( 版权所有 下载不究 - - )
第一章:
课后习题:
1、下列不属于Android平台的技术架构的是:Java虚拟机JVM 2、下面 Activity 通常就是一个单独的屏幕 3、简述Android的优势: (1)系统的开放性和免费性 (2)移动互联网的发展 (3)相关厂商的大力支持 (4)技术的进一步完善
(5)开放收集联盟模式的挑战 (6)其他技术的竞争
本章重点:
1、常见的手机操作系统:Symbian、Android、windows Mobile、IOS、OMS 2、Android平台采用了软件栈,由低到高分为四部分:
Linux内核层
中间层(包括程序库(Libraries)和Android运行时环境) 应用程序框架 应用层
3、一个android应用程序通常由4个组件构成:
(1)活动(Activity),是最基本的android应用程序组件 (2)意图(Intent),利用消息实现应用程序见的交互机制
(3)服务(Service),是android应用程序中具有较长的生命周期但是没有用户界面的程序。
(4)内容提供器(Content Provider),提供了一种多应用间数据共享的方式。 其中活动(Activity)是必要部分。
第二章:
课后习题:
1、Activity生命周期中的(OnCreate())方法用于Activity初次创建时被调用。 2、(暂停)状态下的Activity失去了焦点,但是仍然对用户可见。
3、Activity的可见生命周期是(从调用onStart()方法到onStop()方法的整个过程) 4、Android程序不能直接访问的资源存放在(assets目录)下 5、简述Activity的生命周期中的各种方法。
每个Activity类在定义是都必须继承android.app.Activity
(1)onCreate():Activity初次创建时被调用,在该方法中一般进行一些静态设置,如创建View视图,进行数据绑定。如果Activity是首次创建,本方法后将会调用onStart(),如果Activity是停止后重新显示,则调用onRestart()。
(2)onStart():当Activity对用户即将可见的时候调用。 (3)onRestart():当Activity从停止状态重新启动时调用。 (4)onResume():当Activity将要与用户交互时调用此方法,此时Activity在Activity栈的栈顶,用户输入信息可以传递给它。如果其他的Activity在它的上方恢复显示,则调用onFreeze()。
(5)onFreeze():当Activity被暂停而其他的Activity恢复与用户交互的时候,改方法将会被调用,其后总是调用onPause()。
(6)onPause():当系统要启动一个其他的Activity是(其他的Activity显示之前),这个方法将被调用,用于提交持久数据的改变,停止动画等。
(7)onStop():当另外一个Activity恢复并遮盖住当前的Activity,导致其对用户不再可见时,这个方法被调用
(8)onDestroy():在Activity被销毁前所调用的最后一个方法。 6、编写一个Activity显示一张图片。
参见源代码第二章③
本章重点:
1、Activity具有生命周期,共有四种状态 (1)激活或者运行状态。此时Activity运行在屏幕的前台 (2)暂停状态:此时Activity失去了焦点,但是仍然对用户可见 (3)停止状态:此时Activity被其他Activity覆盖 (4)终止状态:此时Activity将会被系统清理出内存 2、Activity的生命周期还可以根据不同标准分类: (1)完整生命周期:从Activity最初调用onCreate()方法到最终调用onDestroy()方法的过程。 (2)可见生命周期:从Activity调用onStart()方法开始,到调用对应的onStop()方法 (3)前台生命周期:从Activity调用onResume()方法开始,到调用对应的onPause()方法。
3、LogCat视图: Tag:日志标记 Msg:日志信息 Tr:异常信息 4、资源使用: Res目录存放android程序能通过R资源类直接访问的资源。 Assets目录存放android程序不能直接访问的资源(原生文件),必须通过assermanager类以二进制流的形式读取。
5、对于字符串资源,在其他资源文件中使用“@string/资源名称”的形式访问,在代码中可通过“R.string.资源名称”访问
6、对于图片资源,在其他资源文件中使用“@drawable/资源名称”的形式访问,在代码中可通过“R.s drawable.资源名称”访问
第三章:
课后习题:
1、下面不属于Android用户界面元素的是(资源引用R) 2、(事件)不是通过new运算符创建的,而是由用户操作触发的 3、Spinner是(下拉列表)组件。
4、简述创建选项菜单和上下文菜单的步骤
创建选项菜单(Option Menu)步骤:
(1) 覆盖Activity的onCreateOptionsMenu()方法,当第一次打开菜单是,该方
法被自动调用。
(2) 调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的
setIcon()方法为菜单设置图标。
(3) 当菜单项被选择时,覆盖Activity的OptionsItemSelected()方法来响应
事件。
上下文菜单(Context Menu)步骤:
(1) 覆盖Activity的onCreateContextMenu()方法,调用Menu的add()方
法添加菜单项(MenuItem).
(2) 覆盖onContextItemSelected()方法,响应菜单的单击事件。
(3) 在Activity的onCreate()方法中,调用registerForContextMenu()方法,为
视图注册上下文菜单。
本章重点:
1、用户界面元素分类 视图组件(View) 视图容器(ViewGroup) 布局管理(Layout): LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局),AbsoluteLayout(绝对布局)
2、android系统中引用Java的事件处理机制,包括事件,事件源和事件监听器三个事件模型。 (1)事件(Event):是一个描述事件源状态改变的对象,事件不是通过new运算符创建的,而是有用户操作触发的。 (2)事件源(Event Source):即产生事件的对象,事件源通常是UI组件, (3)事件监听器(Event Listener):当事件产生是,事件监听器用于对该事件进行响应和处理。监听器需要事件监听接口中定义的事件处理方法。 2.1事件处理步骤: (1)创建事件监听器
(2)在事件处理方法中编写事件处理代码 (3)在相应的组件上注册监听器
3、常用Widget组件:文本框(TextView),编辑框(EditText),复选框(CheckBox),单选按钮组(RadioGroup),下拉列表(Spinner),图片视图(ImageView),滚动视图(ScrollView),网格视图(GridView),列表视图(ListView)
4、android中提供了两种创建布局的方式:XML布局文件和代码直接实现。
5、android系统中提供了4种对话框:AlertDialog,ProgressDialog,DatePickerDialog,TimePickerDialog。
6、创建提示对话框的步骤如下: (1)获得AlertDialog的静态内部类Builder对象,由该类创建对话框。 (2)通过Builder对象设置对话框的标题、按钮以及按钮将要响应的事件。 (3)调用Builder的Create()方法创建对话框 (4)调用AlertDialog的show()方法显示对话框。 7、创建Toast的步骤: (1)调用Toast的静态方法makeText()创建一个指定文本和时长的提示信息。 (2)调用Toast的show()方法显示提示信息。
提示信息(Toast)是android中用来显示提示信息的一种机制。与对话框不同,Toast是没有焦点的,而且Toast显示时间有限,超过一定的时间就会自动消失。
第四章
课后习题:
1、下列Intent的Action属性中,用来标识应用程序入口的是(ACTION_MAIN)
2、Android系统提供了终端用户用于开发应用程序交互功能的组件,这些组件包括(广播接收器、意图、适配器、内容提供器)
3、下列关于启动Intent的说法,正确的是
Context.startActivity用于启动Activity Context.startService()用于启动Service Context.sendBroadcast()用于发送广播
4、Intent由动作、数据、分类、类型、组件、扩展信息等内容组成 5、简述Intent的过滤机制
Intent过滤器是用来通知系统它们能够处理哪种类型隐式的Intent对象,Activity、Service、Broadcast Receiver能够有一个或多个Intent过滤器。每个过滤器都描述了组件的一种能力,说明了组件将会接受的Intent对象集。它滤如有效的期望类型的Intent对象,滤出不想要的Intent对象。隐式的Intent对象仅能发送给能够通过组件的一个过滤器来传递它的一个组件。
一个Intent过滤器是IntentFilter类的实例。Intent过滤器通常都不是用Java代码来建立的,而是在应用程序的清单文件(AndroidManifest.xml)中用
过滤器有类似于Intent对象的动作、数据、和分类的字段,过滤器会用这三个域来检测一个隐式的Intent对象。对于要传递给拥有过滤器的组件的Intent对象,必须传递所有的这三个要检测的字段。如果其中之一失败了,Android系统也不会把它发送给对应的组件---至少在基于那个过滤器的基础上不会发送。 6、简述Android广播机制的作用
Android广播机制指的是,可以通过实现广播接收器来监听和响应这些广播的Intent。通常广播Intent用于向监听器通知系统给事件或应用程序事件,从而扩展应用程序间的事件驱动
的编程模型。广播Intent可以使应用程序更加开放,通过使用Intent来广播一个事件,可以在不用修改原始应用程序的情况下,对事件作出响应。Android中大量使用广播Intent来广播系统事件,如电池电量、网络连接和来电。 7、编写两个程序,使用广播进行通讯
参见源代码 第四章③
本章重点:
1、Intent由动作(Action),数据(Data),分类(Category)类型(Type)组件(Component)和扩展信息(Extra)
2、Android系统提供了终端用户用于开发应用程序交互功能的组件,广播接收器(Broadcast Receivers),意图(Intent)、适配器(Adapters)以及内容提供器(Content Providers). 3、Action属性用于描述Intent要完成的动作,对要执行的动作进行一个简要描述。 4、Intent的Data属性是执行动作的URI和MIME类型。 5、Category属性指明一个执行Action的分类。
6、Component属性用于指明Intent的目标组件的类名称。 7、Extra属性用于添加一些附加信息。
8、多Activity的Android应用程序可通过startActivity()方法制定相应的intent对象来启动另外一个Activity。
9、Intent的Extra属性用于添加一些附加信息,利用该属性可以进行消息的传递
10、将传递的信息存放到Extra属性中的两种方式:一种是直接将信息添加到Extra属性中,另一种是将数据封装到Bundle包中。
11、Intent可以通过显式方式或隐式方式找到目标组件,显式方式直接通过设置组件名来实现,而隐私方式则是通过Intent Filter过滤实现。
12、在AndroidMainfest.xml配置文件中,Intent Filter以
13、广播接收器(Broadcast Receiver)是接收广播消息,并对消息作出响应的组件。
14、Activity的sendBroadcast(),sendOrderBroadcast(),sendStrikyBoradcast()方法都可以广播Intent到广播接收器。
第五章
课后习题:
1. 下列不是Service特点的是:比Activity的优先级低
2. 关于启动、停止Service的说法,错误的是:Context.bindService()启动的Secvice可以调
用Context.stopService()结束
3. Service生命周期方法有onCreate()、onStart()和onDestroy() 4. 简述Service的生命周期:
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
5. 编写程序,实现Service声明周期中的启动、创建、停止、绑定等
参见本章代码 ①
本章重点:
android:background=\
第三章代码
3.D.1实现单击按钮改变屏幕背景颜色 Main.xml
Res/values/color.xml 颜色资源文件
EventActivity.Java
public class EventActivity extends Activity { Button btnRed, btnBlue; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnRed = (Button) this.findViewById(R.id.btnRed); btnBlue = (Button) this.findViewById(R.id.btnBlue); ColorListener cl=new ColorListener(); btnRed.setOnClickListener(cl); btnBlue.setOnClickListener(cl); } class ColorListener implements OnClickListener { public void onClick(View v) {
if (v == btnRed) { getWindow().setBackgroundDrawableResource(R.color.red); } if (v == btnBlue) { getWindow().setBackgroundDrawableResource(R.color.blue); } } } }
public class EventActivity2 extends Activity { Button btnRed, btnBlue; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnRed = (Button) this.findViewById(R.id.btnRed); btnBlue = (Button) this.findViewById(R.id.btnBlue); btnRed.setOnClickListener(new OnClickListener() { public void onClick(View v) { getWindow().setBackgroundDrawableResource(R.color.red); } }); btnBlue.setOnClickListener(new OnClickListener() { public void onClick(View v) { getWindow().setBackgroundDrawableResource(R.color.blue); } }); } }
3.D.3通过注册窗口演示TextView,Spinner等的使用
Main.xml
android:layout_height=\ android:layout_height=\ RegistActivity.java public class RegistActivity extends Activity { private Button register, cancel; private ToggleButton marriged; private RadioButton male, female; private EditText username, password; private Spinner position; private CheckBox reading, swimming; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); username = (EditText) findViewById(R.id.username); password = (EditText) findViewById(R.id.password); male = (RadioButton) findViewById(R.id.male); female = (RadioButton) findViewById(R.id.female); reading = (CheckBox) findViewById(R.id.reading); swimming = (CheckBox) findViewById(R.id.swimming); marriged = (ToggleButton) findViewById(R.id.marriged); position = (Spinner) findViewById(R.id.position); String[] strs = { \ ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, strs); position.setAdapter(aa); register = (Button) findViewById(R.id.register); cancel = (Button) findViewById(R.id.cancel); register.setOnClickListener(new OnClickListener() { public void onClick(View v) { Log.i(\ Log.i(\ if (male.isChecked()) { Log.i(\ } else { Log.i(\ } } } button_submit.setOnClickListener(new ButtonClickListener()); class ButtonClickListener implements OnClickListener { } public void onClick(View arg0) { } //新建一个Intent对象 Intent myintent = new Intent(); //指定Intent对象的目标组件是Activity2 myintent.setClass(Activity1.this, Activity2.class); //利用startActivity()启动新的Activity,即Activity2 Activity1.this.startActivity(myintent); // 关闭当前的Activity1 Activity1.this.finish();// 关闭当前的Activity Activity1.xml 布局文件 android:orientation=\android:layout_height=\ android:layout_height=\第一个 Activity\ android:layout_width=\android:text=\选择操作系统类型\ android:layout_width=\android:text=\ android:layout_width=\android:text=\ android:layout_width=\android:text=\ public class Activity2 extends Activity { } 布局文件Activity2.xml android:orientation=\android:layout_height=\ android:layout_height=\第二个 Activity\android:layout_height=\返回\ AndroidMainfest.xml 添加Activity2的配置 package=\ ② 使用putExtra()方法实现多个Activity消息传递 使用Bundle方式是代码中的注释部分 Activity1.java public class Activity1 extends Activity { RadioGroup RG_OS; RadioButton RG_OS_RB1, RG_OS_RB2, RG_OS_RB3; public void onCreate(Bundle savedInstanceState) { } class ButtonClickListener implements OnClickListener { public void onClick(View arg0) { Intent myintent = new Intent(); myintent.setClass(Activity1.this, Activity2.class); // 根据用户选择不同的单选按钮,向Intent对象的Extra属性中存不同的值 if (RG_OS_RB1.isChecked()) myintent.putExtra(\else if (RG_OS_RB2.isChecked()) Button button_submit, button_back; super.onCreate(savedInstanceState); setContentView(R.layout.activity1); RG_OS = (RadioGroup) findViewById(R.id.RG_OS); RG_OS_RB1 = (RadioButton) findViewById(R.id.RG_OS_RB1); RG_OS_RB2 = (RadioButton) findViewById(R.id.RG_OS_RB2); RG_OS_RB3 = (RadioButton) findViewById(R.id.RG_OS_RB3); button_submit = (Button) findViewById(R.id.button_submit); button_submit.setOnClickListener(new ButtonClickListener()); } } } else myintent.putExtra(\myintent.putExtra(\myintent.putExtra(\ else if (RG_OS_RB3.isChecked()) /* // 创建Bundle对象,该对象用于记录被传送的数据 Bundle mybundle = new Bundle(); // 根据用户选择不同的单选按钮,向Bundle对象中存不同的值 if (RG_OS_RB1.isChecked()) else mybundle.putString(\ // 将Bundle对象数据封装到Intent对象的Extra属性中 myintent.putExtras(mybundle);*/ //通过Intent对象将数据传送给相应的Activity Activity1.this.startActivity(myintent); Activity1.this.finish(); mybundle.putString(\mybundle.putString(\mybundle.putString(\else if (RG_OS_RB2.isChecked()) else if (RG_OS_RB3.isChecked()) Activity2.java public class Activity1 extends Activity { RadioGroup RG_OS; RadioButton RG_OS_RB1, RG_OS_RB2, RG_OS_RB3; public void onCreate(Bundle savedInstanceState) { Button button_submit, button_back; super.onCreate(savedInstanceState); setContentView(R.layout.activity1); RG_OS = (RadioGroup) findViewById(R.id.RG_OS); RG_OS_RB1 = (RadioButton) findViewById(R.id.RG_OS_RB1); RG_OS_RB2 = (RadioButton) findViewById(R.id.RG_OS_RB2); } RG_OS_RB3 = (RadioButton) findViewById(R.id.RG_OS_RB3); button_submit = (Button) findViewById(R.id.button_submit); button_submit.setOnClickListener(new ButtonClickListener()); class ButtonClickListener implements OnClickListener { public void onClick(View arg0) { /* } } } Intent myintent = new Intent(); myintent.setClass(Activity1.this, Activity2.class); // 根据用户选择不同的单选按钮,向Intent对象的Extra属性中存不同的值if (RG_OS_RB1.isChecked()) myintent.putExtra(\else if (RG_OS_RB2.isChecked()) myintent.putExtra(\else if (RG_OS_RB3.isChecked()) myintent.putExtra(\else myintent.putExtra(\ // 创建Bundle对象,该对象用于记录被传送的数据 Bundle mybundle = new Bundle(); // 根据用户选择不同的单选按钮,向Bundle对象中存不同的值 if (RG_OS_RB1.isChecked()) mybundle.putString(\else if (RG_OS_RB2.isChecked()) mybundle.putString(\else if (RG_OS_RB3.isChecked()) mybundle.putString(\else mybundle.putString(\ // 将Bundle对象数据封装到Intent对象的Extra属性中 myintent.putExtras(mybundle);*/ //通过Intent对象将数据传送给相应的Activity Activity1.this.startActivity(myintent); Activity1.this.finish(); 第六章代码 ① 文本编辑器:输入数据、保存数据、读取数据 public class TextEditorActivity extends Activity { private EditText file_name; // 输入文件名的文本框 private EditText file_content; // 输入文件内容的文本框 private Button read_button; // 读取文件的按钮 private Button save_button; // 保存文件的按钮 public static int LONGTIME = Toast.LENGTH_LONG; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); read_button = (Button) findViewById(R.id.read_file); save_button = (Button) findViewById(R.id.save_file); file_name = (EditText) findViewById(R.id.file_name); file_content = (EditText) findViewById(R.id.file_content); save_button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { String str_file_name = file_name.getText().toString(); if (str_file_name == \ Toast.makeText(TextEditorActivity.this, \文件名为空\ else { String str_file_content = file_content.getText().toString(); try { save(str_file_name, str_file_content); Toast.makeText(TextEditorActivity.this, \保存成功\ LONGTIME).show(); } catch (Exception e) { Toast.makeText(TextEditorActivity.this, \保存失败\ LONGTIME).show(); } } } }); read_button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { String str_file_name = file_name.getText().toString(); if (str_file_name == \ Toast.makeText(TextEditorActivity.this, \文件名为空\ else { try { String str_fiel_content = read(str_file_name); } } }); } } file_content.setText(str_fiel_content); } catch (Exception e) { Toast.makeText(TextEditorActivity.this, R.string.file_read_failed, LONGTIME).show(); } public void save(String file, String fileContent) throws Exception { FileOutputStream fileOutputStream = openFileOutput(file,Context.MODE_PRIVATE); fileOutputStream.write(fileContent.getBytes()); fileOutputStream.close(); } public String read(String file) throws Exception { FileInputStream fileInputStream = openFileInput(file); byte[] buffer=new byte[fileInputStream.available()]; fileInputStream.read(buffer); fileInputStream.close(); return new String(buffer); } ② 添加音乐记录、删除音乐记录(歌单) public class AddActivity extends Activity { private EditText et1, et2; private Button b1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add); this.setTitle(\添加收藏信息\ et1 = (EditText) findViewById(R.id.EditTextName); et2 = (EditText) findViewById(R.id.EditTextSinger); b1 = (Button) findViewById(R.id.ButtonAdd); b1.setOnClickListener(new OnClickListener() { public void onClick(View v) { String name = et1.getText().toString(); String singer = et2.getText().toString(); ContentValues values = new ContentValues(); values.put(\values.put(\ } } }); } DBHelper helper = new DBHelper(getApplicationContext()); helper.insert(values); Intent intent = new Intent(AddActivity.this, QueryActivity.class); startActivity(intent); public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = \private static final String TBL_NAME = \private SQLiteDatabase db; DBHelper(Context c) { } public void onCreate(SQLiteDatabase db) { } public void insert(ContentValues values) { } public Cursor query() { } public void del(int id) { } public void close() { if (db == null) db = getWritableDatabase(); db.delete(TBL_NAME, \SQLiteDatabase db = getWritableDatabase(); Cursor c = db.query(TBL_NAME, null, null, null, null, null, null); return c; SQLiteDatabase db = getWritableDatabase(); db.insert(TBL_NAME, null, values); db.close(); this.db = db; String CREATE_TBL = \ + \ db.execSQL(CREATE_TBL); super(c, DB_NAME, null, 2); } } if (db != null) db.close(); public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public class QueryActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setTitle(\浏览音乐列信息\ final DBHelper helpter = new DBHelper(this); Cursor c = helpter.query(); String[] from = { \int[] to = { R.id.text0, R.id.text1, R.id.text2 }; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row, c, from, to); ListView listView = getListView(); listView.setAdapter(adapter); final AlertDialog.Builder builder = new AlertDialog.Builder(this); listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) { final long temp = arg3; builder.setMessage(\真的要删除该记录吗?\是\ new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } helpter.del((int) temp); Cursor c = helpter.query(); String[] from = { \int[] to = { R.id.text0, R.id.text1, R.id.text2 }; getApplicationContext(), R.layout.row, c, from, to); SimpleCursorAdapter adapter = newSimpleCursorAdapter( ListView listView = getListView(); listView.setAdapter(adapter); }).setNegativeButton(\否\ new DialogInterface.OnClickListener() { } } }); } }); public void onClick(DialogInterface dialog, } int which) { AlertDialog ad = builder.create(); ad.show(); helpter.close(); ③ 利用ContentProvider访问联系人,增加和删除联系人记录 public class CPActivity extends Activity { // 联系人的URI Uri contact_uri = Contacts.CONTENT_URI; TextView textview; // 声明TextView对象 int textcolor = Color.GREEN; // 定义文本颜色 public void onCreate(Bundle savedInstanceState) { } public String getContactInfo() { String result = \ ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(contact_uri, null, null, null, null); int idIndex = cursor.getColumnIndex(Contacts._ID); int nameIndex = cursor } cursor.close(); .getColumnIndex(Contacts.DISPLAY_NAME); for (cursor.moveToFirst(); (!cursor.isAfterLast()); cursor.moveToNext()) { result = result + cursor.getString(idIndex) + \result = result + cursor.getString(nameIndex) + \super.onCreate(savedInstanceState); setContentView(R.layout.main); // 根据main.xml设置程序UI textview = (TextView) findViewById(R.id.textview); // 创建textview对象 String result = getContactInfo(); textview.setTextColor(textcolor); // 设置文本框的颜色 textview.setTextSize(20.0f); // 定义字体大小 textview.setText(\记录\\t名字\\n\设置文本框的文本 } } return result; 第七章代码 ① 使用HttpURLConnection访问Servlet,实现用户的登录功能: public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter(\ String password = request.getParameter(\ System.out.println(username + \ response.setContentType(\ response.setCharacterEncoding(\ PrintWriter out = response.getWriter(); String msg = null; if (username != null && username.equals(\ && password.equals(\ msg = \登录成功!\ } else { msg = \登录失败!\ } out.print(msg); out.flush(); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } } } return result; 第七章代码 ① 使用HttpURLConnection访问Servlet,实现用户的登录功能: public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter(\ String password = request.getParameter(\ System.out.println(username + \ response.setContentType(\ response.setCharacterEncoding(\ PrintWriter out = response.getWriter(); String msg = null; if (username != null && username.equals(\ && password.equals(\ msg = \登录成功!\ } else { msg = \登录失败!\ } out.print(msg); out.flush(); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
正在阅读:
《Android程序设计》期末总结04-02
小学英语说课稿02-19
普通遗传学 第八、九章 染色体结构的变异 染色体数目的变异 自出试题及答案详解第一套11-23
放下顾虑满分作文5篇02-05
中国农历十二个月份的称谓11-06
山科大英语6(本科)答案06-30
米箩乡2012年上半年安全总结03-09
眼科医生述职报告04-08
爱在校园作文600字06-30
政治必修3复习提纲重点红色标注10-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 期末
- Android
- 总结
- 固定收益习题
- 李启超:第三方物流企业配送管理研究-以安吉物流为例:杜杨铭
- 第三节测量小灯泡的电功率教学设计教案
- 大学C# - 试题 - 答案题库 - 程序设计 - .NET - Framework - vis
- 电工电子组课程考核大纲资料
- 七年级下册英语期末专项训练精选试题
- 西南大学网教《兽医内科学》作业答案
- 铁总财〔2016〕119号 - 图文
- 2018年苏教版六年级语文下册期中试卷
- 三废排放量及污染物排放量计算
- 北京市燕山区2011年中考二模数学试题1
- 吕立秋:行政协议的纠纷解决路径与思考 中法评 独家首发
- 楚雄州烟草种植专业合作社名录224家
- 中国法制史案例分析3
- 2017年版监利县产业招商项目包装策划咨询方案报告(目录) - 图
- 大学无机化学复习题
- 浅谈新疆空管系统中的GIS与RS技术应用 doc
- 房地产项目尽职调查报告模板
- 手诊笔记
- 长春市旅游发展总体规划 - 图文