MVC(Android:intent-filter && Struts2)

Android的Intent设计类似于Struts2框架中逻辑视图的设计,Intent通过指定Action属性把Intnet与具体的Activity分离,从而进行解耦,

接下来通过代码来进行比较:

Android的简单实现:

package com.anthony.intent;

import com.anthony.intent.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AndroidMVCActivity extends Activity {
    /** Called when the activity is first created. */
		final static String ANTHONY_ACTION = "com.anthony.intent.action.ANTHONY_ACTION";
		final static String ANTHONY_CATEGORY = "com.anthony.intent.category.ANTHONY_CATEGORY";	
		@Override
		public void onCreate(Bundle savedInstanceState)
		{
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
			Button bn = (Button)findViewById(R.id.bn);
			bn.setOnClickListener(new OnClickListener()
			{
				@Override
				public void onClick(View arg0)
				{
					Intent intent = new Intent();
					//设置Action属性
					intent.setAction(AndroidMVCActivity.ANTHONY_ACTION);
					//添加Category属性
					intent.addCategory(AndroidMVCActivity.ANTHONY_CATEGORY);
					startActivity(intent);
				}	
			});
		}
}


 

package com.anthony.intent;

import java.util.Set;

import com.anthony.intent.R;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
/**
 * 
 * @author Anthony_YWJ
 *
 */
public class SecondActivity extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		EditText show = (EditText)findViewById(R.id.show);
		String action = getIntent().getAction();
		show.setText("Action为:" + action);
		EditText cate = (EditText)findViewById(R.id.cate);
		Set<String> cates = getIntent().getCategories();
		cate.setText("Category属性为:" + cates);		
	}
}


 

Android的配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.anthony.intent"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.anthony.intent.AndroidMVCActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity"
			android:label="@string/app_name">
			<intent-filter>
				<!-- 指定该Activity能响应action为指定字符串的Intent -->
				<action android:name="com.anthony.intent.action.ANTHONY_ACTION" />
				<!-- 指定该Activity能响应category为指定字符串的Intent -->
				<category android:name="com.anthony.intent.category.ANTHONY_CATEGORY" />
				<!-- 指定该Activity能响应category为android.intent.category.DEFAULT的Intent -->
				<category android:name="android.intent.category.DEFAULT" />   
			</intent-filter>
		</activity>
    </application>

</manifest>


 Struts2的简单实现:

1.简单的表单:

<%@ page contentType="text/html; charset=gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
  <head>
    <title><s:text name="title.text"/></title>
  </head>  
  <body>
    <s:form action="sayhello">
    	<!-- 通过struts.xml配置文件去找到对应的类来处理提交的信息 -->
    	<s:text name="label.name"/>
    	<s:textfield name="userName" size="22"/>
    	<s:submit key="label.submit"/> 
    	<s:reset key="label.reset"/>
    </s:form>
	<s:if test="hasFieldErrors()">
		<s:fielderror/>
	</s:if> 
  </body>
</html>

struts.xml配置
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<constant name="struts.i18n.encoding" value="gbk"/>
	
	<constant name="struts.locale" value="zh_CN" />
	
	<constant name="struts.custom.i18n.resources" value="messageResource"/>
	
	<constant name="struts.devMode" value="true" />
	
	<constant name="struts.ui.theme" value="simple" />

    <package name="hello" extends="struts-default">
		<!-- 配置业务控制器HelloAction映射 -->
		<action name="sayhello" class="com.anthony.action.HelloAction">
			
			<result>/welcome.jsp</result>
			
			<result name="input">/index.jsp</result>
		</action>
    </package>
</struts>


 

package com.anthony.action;

public class HelloAction extends ActionSupport{
	private String userName;//保存请求参数用户姓名
	private String reslutStr;//存放处理结果

	/** 重载ActionSupport类的execute方法 */
	public String execute(){
		reslutStr="这是业务控制器HelloAction处理的结果内容!";
		return SUCCESS;
	}
	/** 手动进行表单验证 */
	public void validate(){
		//用户姓名不能为空
		if(userName==null||userName.trim().length()<1){
			addFieldError("userName",getText("username.error"));
		}
	}

	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getReslutStr() {
		return reslutStr;
	}
	public void setReslutStr(String reslutStr) {
		this.reslutStr = reslutStr;
	}	
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值