Spring MVC – URI Templates

  在spring mvc中通过url路径来访问控制器中的方法,可以在用@RequestMapping注解的路径中使用URI模板。使用@PathVariable注解来指明方法中的参数应该对应URI模板中的变量,如下例子:

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);  
  model.addAttribute("owner", owner);  
  return "displayOwner"; 
}

  URI模板”/owners/{ownerId}”指定了变量名为ownerId。当方法被请求的时候ownerId的值会被赋值为请求的URI,比如一个请求为/owners/fred,那么方法中的ownerId参数会赋值为fred。必须保证参数名和URI模板变量名一致才能自动赋值,想自定义参数变量需要在@PathVariable注解中加入参数,如下:

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable("ownerId") String theOwner, Model model) {
  // implementation omitted
}

  当然,也可以使用多个@PathVariable来绑定多个URI模板变量,如下:

@RequestMapping(value="/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET)
public String findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
  Owner owner = ownerService.findOwner(ownderId);  
  Pet pet = owner.getPet(petId);  
  model.addAttribute("pet", pet);  
  return "displayPet"; 
}

  下面的代码展示使用变量作为相对路径,当请求为/owners/42/pets/21,会调用findPet()方法。

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
  @RequestMapping("/pets/{petId}")
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {    
    // implementation omitted
  }
}

  @PathVariable和方法中的参数可以是任何简单数据类型,例如:int,long,Date,等等。spring会自动转换,如果不匹配则抛出TypeMismatchException。

  原文:link

java使用google网址缩短

package com.dorole.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

public class Googl
{
	private static String googUrl = "https://www.googleapis.com/urlshortener/v1/url";

	public static String shorten(String longUrl)
	{
		String shortUrl = "";
		try
		{
			URLConnection conn = new URL(googUrl).openConnection();
			conn.setDoOutput(true);
			conn.setRequestProperty("Content-Type", "application/json");
			OutputStreamWriter osw = new OutputStreamWriter(
					conn.getOutputStream());
			osw.write("{\"longUrl\":\"" + longUrl + "\"}");
			osw.flush();

			BufferedReader br = new BufferedReader(new InputStreamReader(
					conn.getInputStream()));
			String line;
			while ((line = br.readLine()) != null)
			{
				if (line.indexOf("id") > -1)
				{
					shortUrl = line.substring(8, line.length() - 2);
					break;
				}
			}
			osw.close();
			br.close();
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return shortUrl;
	}

	public static void main(String[] args)
	{
		String url = Googl.shorten("http://dorole.com");
		System.out.println(url);
	}
}

需要的地方调用Googl.shorten(), 参考:link, 引自:link

搭建Android应用程序开发环境

  就现在来讲Google Android已经不是什么新鲜事了,或许大家早已拥有android手机。也许你知道android手机界面如此的华丽,操作是如此的便捷。而其中各种各样的应用才是android手机最具魅力地方。现在就来折腾一下:开发我们自己的android手机应用。

  首先便是搭建一个开发环境,对于这种性质的文章网络上多如牛毛,参差不齐。我这篇就当作自己的学习笔记。

  需要的软件,在这里我都选最新的,折腾不需要太严肃:

  依次下载安装好就行了,其中eclipse和android sdk是直接解压即可,比如我放在d:\eclipse和d:\android-sdk-windows。

1. 下载android模拟器

  打开解压好的android-sdk-windows,运行SDK Manager。这个是sdk的管理中心,安装和创建android模拟器都在这里进行,单击Available Packages,看到可用的sdk平台,选择最新的Android 2.2和Android API 8,大概70多兆。下载完后就可以在第一个Virtual Devices中创建模拟器了。单击右边的 New… 填写模拟器名字,Target选择Android 2.2 – API Level 8,SD Card填个256 MiB就可以了。其余暂时默认,有兴趣的可以自行看看Hardware到底有些什么。

  创建好模拟器后,点击 Start… 运行起来就可以看到手机界面了。

image

2. 安装eclipse 插件 ADT

  1. 运行 Eclipse,选择 Help > Install New Software。
  2. 在打开的Available Software窗口中单击 Add…。
  3. 在Name栏给远程站点取个名称,比如:Android Plugin。在Location栏输入:https://dl-ssl.google.com/android/eclipse/

    提示:如果下载遇到麻烦可以将https换成http试试。单击 OK。

  4. 回到Available Software窗口,将Android DDMS和Android Development Tools都选上,单击 Next。
  5. 单击 Next ,同意安装协议,单击 Finish ,完成。
  6. 重启 Eclipse。

  此处照抄原文并翻译了一下,实际就点几下鼠标就可以了,用过eclipse的很容易上手。重启后打开 Window > Perferences > Android 在 SDK Location 中填入解压的sdk路径,比如:D:\android-sdk-windows。

image

3. 创建android项目

  在eclipse中单击 File > New > Android Project

  • project name 填个 HelloAndroid
  • Build Target 同样选Android 2.2
  • Application name(应用的名称):比如 doroleApp
  • Package name(包名):比如 com.dorole
  • Create Activity(可以理解为一个活动界面):比如 myActivity

4. 在模拟器中运行

  新建的项目不用做任何修改,在项目名称上单击鼠标右键,选 Run As > Android Application 就会打开之前创建的模拟器,解锁后我们写的应用就会运行了,屏幕上显示 Hello World, myActivity。到此Android开发环境就搭建完毕。有真机的也可以将项目打包成apk放在手机上运行,全文完。

image

官方参考资料:

http://developer.android.com/index.html(需穿越)

镜像:http://androidappdocs.appspot.com/index.html(无需穿越)

升级myeclipse 8.5 到 8.6

  好吧,一个星期没更新了,一上来又是一篇关于升级的文章,版本控,莫怪~~

  作为一个敲代码的人,自然要有一款得心应手的集成开发环境,myeclipse 和 netbeans 就是不错的选择,随着语言的进步,框架的更新升级,自然ide也要更新。官网在八月初就放出了8.6正式版,这一次的更新主要是对javascript提供了更强大的支持,官方宣传就是

JavaScript Devs Smarter, Application Management Simpler

  支持javascript的oop,支持大部分的js开源框架,例如jQuery,DOJO 和 YUI。意味着在写jquery都可以有自动提示,这也是我的最爱。还有其他的一大堆更新不罗嗦了。

  本来想下载8.6的完整安装包再全新安装,不过800多兆下载也不容易,于是进管理中心去升级,好家伙,居然也要400多兆,更新界面道是蛮漂亮的。

  友情提示自动更新需自备vpn,否则用迅雷下载完整版:

  照例放上高清大图一张

myeclipse

linux中oracle,java,tomcat设置环境变量

  最近配置的一台linux服务器,主要有oracle 11g, jdk1.6, apache和tomcat做web服务器,jk桥接。其中环境变量真啰嗦,在此留个记录,备用。

JAVA_HOME=/usr/local/jdk1.6.0_21
JAVA_BIN=/usr/local/jdk1.6.0_21/bin
CATALINA_HOME=/usr/soft/tomcat
CATALINA_BASE=/usr/soft/tomcat
CATALINA_TMPDIR=/usr/soft/tomcat/temp
ORACLE_SID=orcl
ORACLE_BASE=/home/user/app/user
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$ORACLE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/bootstrap.jar
export JAVA_HOME JAVA_BIN CATALINA_HOME CATALINA_BASE CATALINA_TMPDIR ORACLE_SID ORACLE_BASE ORACLE_HOME PATH CLASSPATH

  export一气呵成,美观实用。想要全局有效就添加在/etc/bashrc最后。只对某个用户有效,则添加在/home/user/.bashrc末尾。其实只不过是在~/.bashrc中调用了/etc/bashrc而已。。