Namespace=”csdn/csdn/”
<package name=”ss” namespace=”/csdn/csdn”>
<action=”delete”>
</package>
<package name=”test” namespace=”/csdn”>
<action=”delete”>
</package>
<package name=”sss” namespace=””>
<action=”delete”>
</package>
Action名称的搜索顺序
1、获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串"" ),如果还是找不到,页面提示找不到action。
Action原型 struts2
Prototype 原型 每次请求都会创建一个新的Action对象
Servlet
Singleton 原型 当第一次请求时,创建servlet对象 之后每次都使用该对象即可。
Servlet的生命周期
创建---init---service---destory
1.NSDateFormatter配合NSDate与NSString之间的转化 NSDateFormatter有下面2个方法: - (NSString *)stringFromDate:(NSDate *)date;//NSDate转NSString - (NSDate *)dateFromString:(NSString *)string;//NSString转NSDate e.g. NSString *dateString=@"1900-01-01"; NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date=[dateFormatter dateFromString:dateString]; [dateFormatter release]; NSString转NSDate与上面类似 NSString *dateString=[dateFormatter dateFromString:[NSDate date]]; 2.NSDateFormatter 的一些格式介绍 [dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE为星期几,EEE为周几 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; [dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 为xx月,一个d可以省去01日前的0 3.NSString转NSDate少一天的解决办法 用下面这种格式化方式 1.[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 2. NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]]; NSDate *todayDate = [calendar dateFromComponents:components];
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="自定义列表对话框" />
</RelativeLayout>
dialog.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:background="@android:color/white"
android:orientation="vertical" >
<TextView
android:id="@+id/first"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="25sp"
android:text="发送电子邮件" />
<TextView
android:id="@+id/second"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dip"
android:textSize="25sp"
android:text="分享到Twitter" />
<TextView
android:id="@+id/third"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dip"
android:textSize="25sp"
android:text="分享到FaceBook" />
</LinearLayout
>
styles.xml如下:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
mainActivity如下:
package c.c.testdialog;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
* Demo描述:
* 自定义列表对话框(自定义View中采用几个TextView)
* 遇到的问题:
* 自定义对话框有黑色边框
* 解决办法:
* 设置样式(style)
*
*/
public class MainActivity extends Activity {
private Button mButton;
private TextView mFirstTextView;
private TextView mSecondTextView;
private TextView mThiredTextView;
private View mDialogView;
private Dialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
mButton=(Button) findViewById(R.id.button);
mButton.setOnClickListener(new ClickListenerImpl());
LayoutInflater layoutInflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
mDialogView=layoutInflater.inflate(R.layout.dialog, null);
mFirstTextView=(TextView) mDialogView.findViewById(R.id.first);
mFirstTextView.setOnClickListener(new ClickListenerImpl());
mSecondTextView=(TextView) mDialogView.findViewById(R.id.second);
mSecondTextView.setOnClickListener(new ClickListenerImpl());
mThiredTextView=(TextView) mDialogView.findViewById(R.id.third);
mThiredTextView.setOnClickListener(new ClickListenerImpl());
}
private class ClickListenerImpl implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
init();
// 弹出自定义对话框
mDialog=new Dialog(MainActivity.this, R.style.dialog);
mDialog.setContentView(mDialogView);
mDialog.show();
break;
case R.id.first:
System.out.println("------> 第一个TextView");
mDialog.dismiss();
break;
case R.id.second:
System.out.println("------> 第二个TextView");
mDialog.dismiss();
break;
case R.id.third:
System.out.println("------> 第三个TextView");
mDialog.dismiss();
break;
default:
break;
}
}
}
}