`

Spring For Android初体验

 
阅读更多

  房子最近在装修,着实忙,还好一十几年的老朋友搞装修的,这让我应对装修相当的轻松自如,哥们儿几个都巨羡慕我,啥也不用愁,出门在外,真的是朋友多了路好走啊!真的是没事暗自偷着乐哟!

  今天终于能捞到个清闲的日子写写博客,跟大家交流交流。我最近学习一Spring子项目:SPRING FOR ANDROID。

  官方网址:http://www.springsource.org/spring-android

  Spring For Android是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,这其中包括了你可以使用该项目提供的RestTemplate来为你的Android客户端提供REST服务,另外该项目还提供了跟其它诸如Twitter和Facebook等社交网络的集成与OAuth授权客户端等等。关于SPRING FOR ANDROID的一些详细说明与应用,可参考官方说明文档:http://static.springsource.org/spring-android/docs/1.0.x/reference/html/overview.html

  概念性质的东西我也就不再说明了,我们直接从该子项目的官方Sample开始学习吧,简单且直接:

  示例程序位于:https://github.com/SpringSource/spring-android-samples

  如果你已经安装了GitHub,那你可直接在指定的文件夹下输入

 

git clone https://github.com/SpringSource/spring-android-samples.git
 

  从而获取到源代码(具体的GitHub使用细节可参考Android源码获取 )。

  或者干脆,你就直接老办法Download as Zip。

  代码拿下来以后,可以看到包含四个小项目,本博文就以spring-android-basic-auth作为我们的学习之旅,之所以选择这个示例,是因为它麻雀虽小但五脏俱全。非常的具有代表性。

  打开Eclipse分别导入maven项目spring-android-basic-auth的client/server,当然前提是,你确保你已经成功安装了Android的SDK,Eclipse的插件ADT,以及Maven的Eclipse插件m2eclipse,OK,导入项目:

  因为需要从网上下载项目关联的jar包,所以项目导入速度取决于您当前的网络环境。导入项目我想你肯定或多或少的会遇到一点点的小麻烦,我只能在这里列举一些我在导入项目所遇到的问题仅供大家参照

  1、我们现在是要在Eclipse上利用Maven来编译管理Android项目,所以我们需要安装Android Configurator这个Maven Android插件,提供了针对ADT的Maven依赖管理的能力,这个插件使得
M2E、ADT以及Maven Android Plugin这三个插件在Eclipse内部能够很良好的协调工作。该插件的安装可通过Eclipse Marketplace...来安装。我使用的是Eclipse Indigo版本,直接在Help中找到Eclipse Marketplace..,点击,输入:

   Android M2E,如下图所示:

 

M2E-ANDROID

   点击“install”,如下图全选:

 

 

  安装完成后,重启Eclipse,搞定。

  2、spring-android-basic-auth的server代码解析:

    2.1、导入Maven项目,我的工程地址是:G:\source\spring-android-samples\spring-android-basic-auth\server,导入到Eclipse中,该工程包含了Spring3.0很多最新的功能,同时也包含了Spring Security。我们来看看该工程主要包含哪些内容,我们首先打开web.xml,重点看两个新的配置:

 

	<!-- Java-based annotation-driven Spring container definition -->
	<context-param>
		<param-name>contextClass</param-name>
		<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
	</context-param>

	<!-- Location of Java @Configuration classes that configure the components 
		that makeup this application -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>org.springframework.android.basicauth.config</param-value>
	</context-param>
 

  第一个context-param,指定AnnotationConfigWebApplication加载WebApplicatioinContext,该类是Spring3.0引入的,提供了基于注解的方式代替XML文件配置,第二个context-param则指定了AnnotationConfigWebApplicationContext扫描以@Configuration配置的类的路径。接着我们来看看config包下的内容

  2-2、org.springframework.android.basicauth.config包下的类查看:

     该包下包含三个ComponentConfig、SecurityConfig、WebConfig配置类

     1)ComponentConfig:

 

@Configuration
@ComponentScan(basePackages="org.springframework.android.basicauth", 
	excludeFilters={ @Filter(Configuration.class)} )
public class ComponentConfig {

}

    @Configuration注解,该注解表明一个类声明了一个或多个Bean方法且可以被Spring窗口在运行时生成Bean的定义和服务请求。这个注解就类型于我们以前开发定义的Spring XML文件

    @ComponentScan,这里用到了两个属性,分别为basePackages和excludeFilters,不解释,类似如下代码:

 

<context:component-scan base-package="org.springframework.android.basicauth" >
		<context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
</context:component-scan>
 

    也就是Spring在扫描组件实体化的时候,不需要实例化带有Configuration的注解。

    2)SecurityConfig:

 

@Configuration
@ImportResource("classpath:security.xml")
public class SecurityConfig {
	
}

    我们就只看ImportResource,引入类路径下的security.xml文件,类似Spring XML的<import/>标签功能,通过AnnotationConfigApplicationContext加载并解析实例化。security.xml文件我就不在此列出了,详细见工程包。主要就是定义了系统的权限,只有输入用户名/密码:roy/spring才能登入系统。

   3)WebConfig:

 

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
 
}

   这个类呢主要的就是Spring MVC的配置功能,@EnableWebMvc与@Configuration一起使用,通过继承WebMvcConfigurerAdapter这个适配器,然后继承该类的私有方法,从而达到配置Spring MVC的目的。

     viewResolver()方法的功能,类似Spring XML配置文件如下:

 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<beans:property name="prefix" value="/WEB-INF/views/" />
	<beans:property name="suffix" value=".jsp" />
</beans:bean>
 

    就是解析Spring MVC请求的页面映射到/WEB-INF/views/包下的,所有后缀名为.jsp的文件。

     addViewControllers该方法功能类似

 

<mvc:view-controller path="/" view-name="index"/>

    也就是默认页面指向WEB-INF/views/index.jsp文件。

  3、布署spring-android-basic-auth项目到Tomcat服务器:

   首先在tomcat服务器的%TOMCAT_PATH%/conf/tomcat-users.xml 中添加一个拥有管理员权限访问服务器的用户。例如:

 

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <user username="admin" password="admin" roles="manager"/>
</tomcat-users>

  这个意思是,添加一个名为manager的用户用色,然后为这个用户角色设定用户名和密码为admin。这样,我们在浏览器里输入http://localhost:8080/manager,就可输入上述提供的用户名和密码来操作Tomcat的一些项目管理。

  既然我们需要通过Maven把项目布置到Tomcat服务器,那我们是不是要将Maven与Tomcat建立一个关联关系呢,所以在%MAVEN_PATH%/conf/settings.xml的文件中,添加如上所示一致的用户权限信息:

 

 <servers>
	<server>
		<id>TomcatServer</id>
		<username>admin</username>
		<password>admin</password>
	</server>
</servers>
 

  上述代码就是为了连接Tomcat的Web服务器而设置的权限配置信息,id必须唯一。

  有了这个服务连接配置信息之后,那我们怎么办呢,有了就得要用啊!如何用?!发布哪个项目那我们就得在那个发布项目里添加关联发布了。这就需要我们在项目的pom.xml里添加Maven-Tomcat plugin,来将项目关联上Tomcat服务,具体配置如下所示:

 

<plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>tomcat-maven-plugin</artifactId>
      <configuration>
		<url>http://localhost:8080/manager</url>
		<server>TomcatServer</server>
		<path>/spring-android-basic-auth-server</path>
      </configuration>
      <version>1.1</version>
</plugin>

   启动Tomcat服务器,到指定目录输入mvn tomcat:deploy,即可完成spring-android-basic-auth项目Server的发布。这段配置就是告诉maven,将我们的项目以路径spring-android-basic-auth-server通过TomcatServer的配置信息发布到我们的本地Tomcat服务。这个过程实际上就是利用Tomcat的管理员权限用发布*.war的文件到服务器里。

   这些服务器端的代码就算是讲解完成了,下一节我们来继续Android客户端的项目学习。附件附上包含客户端的项目源代码。

 

 

 

 

 

 

 

 

 

  • 大小: 78.8 KB
  • 大小: 49.6 KB
分享到:
评论
3 楼 summerzym 2013-04-18  
android 分享到facebook碰到点问题   咦!  你在国家软件园么?
2 楼 cuics-100 2012-11-03  
jar是通过maven远程获取的,所以检查一下你是否安装了maven,另外你的网络状态是否良好
1 楼 lily_eye 2012-09-26  
导入报错了,是木有jar包吗?

相关推荐

    用spring构建android互联网应用

    首先,`libs.zip`可能包含了Spring for Android所需的库文件,这些库如Spring Android Core、Spring Android REST Template等,是构建Android应用与服务器端交互的基础。Spring Android Core提供了一些基本服务,如...

    spring android M4

    Spring for Android是Spring框架的一个扩展,专为移动应用开发而设计。...使用"spring-android-1.0.0.M4"版本,开发者可以享受到更加稳定和成熟的特性,同时也能体验到Spring框架在移动开发领域的独特优势。

    spring-android-rest-template-1.0.1.RELEASE.jar.zip

    Spring框架,作为Java开发的基石,也扩展到了Android平台,提供了Spring for Android的组件,其中Spring Android REST Template是核心工具之一。本文将深入探讨Spring Android REST Template 1.0.1.RELEASE版本,...

    Android相机、相册图片上传程序

    为了减少流量消耗和提高用户体验,通常会采用分块上传或者压缩图片的方式。 服务器端的实现可能基于常见的Web框架,如Spring Boot或Node.js。它需要接收来自客户端的图片文件,保存到服务器的文件系统或者数据库中...

    a simple cache for android and java.zip

    在Android和Java开发中,缓存机制是一种非常重要的技术,用于优化应用程序的性能,减少对网络资源的依赖,提升用户体验。"a simple cache for android and java.zip" 提供的可能是一个简洁的缓存实现,方便开发者...

    Android代码-springboot-socks

    推荐阅读本教程的三大理由: 文章内容均为原创,结合官方文档和实战经验编写。...SpringBoot 快速整合MyBatis(去XML化 初体验) SpringBoot 快速整合Mybatis(去XML化 注解进阶) SpringBoot 快速整合Mybatis(去XML

    rest(jersey)+hibernate+spring+annotation android开发服务器端

    在实际项目中,一个常见的流程可能是这样的:Android客户端通过RESTful API发送请求,Jersey接收并解析请求,然后调用由Spring管理的服务层方法,这些方法内部利用Hibernate与数据库进行交互。整个过程中,注解起到...

    Android上传单文件和多文件(后台使用MultipartFile)

    在实际开发中,Android单文件和多文件上传是一个相对复杂的流程,涉及到客户端与服务器端的交互,理解并熟练掌握这一过程对提升Android应用的用户体验至关重要。通过不断实践和优化,可以打造出高效、稳定且用户友好...

    Hibernate+springMVC+Mybatis+Activiti5.16+Android客户端+mysql数据库

    标题中的"Hibernate+springMVC+Mybatis+Activiti5.16+Android客户端+mysql数据库"是一个典型的Java企业级应用架构,它涉及到多...开发者需要掌握如何在实际项目中整合这些技术,以实现高效、稳定且用户体验良好的应用。

    beagle-backend:使用Beagle&Spring的BFF

    "比格犬后端"项目是一个使用Beagle框架与Spring技术构建的 Backend-for-Frontend(BFF)解决方案。在本文中,我们将深入探讨Beagle和Spring如何协同工作,以及Kotlin作为编程语言在其中发挥的关键作用。 首先,让...

    基于Android平台的酒店系统设计与实现.doc

    此外,客户端还利用UI界面设计,提高用户体验,使得操作更为简洁明了。 2. **Web服务器端** 服务器端主要负责酒店的预定管理,涵盖了管理员管理、资源管理(如房间、设施等)以及订单管理等核心业务。管理员可以...

    影视APP原生双端

    这个项目的核心在于它的原生特性,意味着APP是针对特定的操作系统(如Android和iOS)用各自平台的原生编程语言(如Java或Kotlin for Android,Swift或Objective-C for iOS)进行开发的。原生应用通常具有更好的性能...

    Android连接MySQL,并进行简单的操作

    在Android开发中,有时我们需要与后端数据库进行交互,例如MySQL,来实现...同时,对于界面设计,尽管本示例中的界面可能较为简陋,但可以通过学习和应用Android UI设计原则,创建更加美观和用户体验良好的应用程序。

    仿大众点评网

    现代前端框架如React或Vue.js可以提高开发效率并提供更好的用户体验。 2. **响应式设计**:考虑到不同设备的显示需求,仿制网站需采用响应式设计,确保在手机、平板和桌面电脑上都能良好显示。这需要利用媒体查询...

    programming-cloud-services-for-android:为 Android 编程云服务

    Java是一种常用的后端语言,可以搭配Spring Boot框架构建RESTful API。开发者需要了解HTTP协议,以及JSON或Protobuf等数据交换格式。 **6. 安全性** 在处理云服务时,安全性至关重要。确保数据加密,使用HTTPS进行...

    JAVA访问WebServices接口的简单实例,android可用

    在大量使用Web Services的Android应用中,考虑缓存策略以减少网络请求,提高用户体验。还可以使用GZIP压缩减少传输数据量。 10. **RESTful API**: 对于更现代的Web Services,可能采用REST(Representational ...

    Android下调用webservice的客户端和服务器端详细代码

    注意,实际项目中,需要处理网络权限、异步任务、错误处理等细节问题,以确保应用的稳定性和用户体验。 在Android_webservice_demo压缩包中,包含了完整的Android客户端和服务器端代码,可以下载解压后运行,以帮助...

Global site tag (gtag.js) - Google Analytics