一些很不错的设计图片下载网站
偶然发现的,这些图片素材不比国外的差,很适合设计师用,使用时主要版权就行
jpg设计图片下载地址
抽象艺术 http://www.tutu001.com/jpg/sc_art/index.html
动物素材 http://www.tutu001.com/jpg/sc_animal/index.html
创意合成 http://www.tutu001.com/jpg/sc_idea/index.html
背景纹理 http://www.tutu001.com/jpg/sc_back/index.html
服装美容 http://www.tutu001.com/jpg/sc_clothes/index.html
家具室内 http://www.tutu001.com/jpg/sc_furniture/index.html
商业金融 http://www.tutu001.com/jpg/sc_business/index.html
食品饮料 http://www.tutu001.com/jpg/sc_food/index.html
保健医疗 http://www.tutu001.com/jpg/sc_health/index.html
假期旅游 http://www.tutu001.com/jpg/sc_travel/index.html
新闻传媒 http://www.tutu001.com/jpg/sc_news/index.html
工业科技 http://www.tutu001.com/jpg/sc_industry/index.html
自然花草 http://www.tutu001.com/jpg/sc_natural/index.html
物体图片 http://www.tutu001.com/jpg/sc_object/index.html
城市建筑 http://www.tutu001.com/jpg/sc_city/index.html
人物素材 http://www.tutu001.com/jpg/sc_people/index.html
教育宗教 http://www.tutu001.com/jpg/sc_education/index.html
符号标记 http://www.tutu001.com/jpg/sc_sign/index.html
运动休闲 http://www.tutu001.com/jpg/sc_sports/index.html
交通运输 http://www.tutu001.com/jpg/sc_traffic/index.html
中国古老 http://www.tutu001.com/jpg/sc_china/index.html
矢量设计素材下载地址
花纹/边框/背景 http://www.tutu001.com/vector/sc_patterns/index.html
网页/导航/图标 http://www.tutu001.com/vector/sc_web/index.html
节庆/假期/旅游 http://www.tutu001.com/vector/sc_holiday/index.html
广告/创意/商业 http://www.tutu001.com/vector/sc_idea/index.html
人物/表情/服装 http://www.tutu001.com/vector/sc_people/index.html
艺术/抽象/潮流 http://www.tutu001.com/vector/sc_nature/index.html
动物/植物/自然 http://www.tutu001.com/vector/sc_animal/index.html
生活/百科/食物 http://www.tutu001.com/vector/sc_life/index.html
中国/传统/文化 http://www.tutu001.com/vector/sc_culture/index.html
运动/娱乐/休闲 http://www.tutu001.com/vector/sc_sports/index.html
矢量设计稿合集 http://www.tutu001.com/vector/sc_source/index.html
插图/插画 http://www.tutu001.com/vector/sc_other/index.html
psd分层素材下载
psd分层设计素材 http://www.tutu001.com/psd/psd_sc/index.html
psd设计稿源文件 http://www.tutu001.com/psd/psd_source/index.html
png图标/gif动画
png/icon图标 http://www.tutu001.com/png/sc_icon/index.html
gif动画 http://www.tutu001.com/png/sc_gif/index.html
1.RunningUpLoader上传Bean
首先是RunningUpLoader.java,代码有些多,因为我是自己来解析输入流的。
package testupload;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
public class RunningUpLoader {
public RunningUpLoader() {
}
/**
* 上传文件
* @param request HttpServletRequest Servlet的请求对象
* @param name String 要上传的文件在表单中的参数名
* @param fileName String 保存在服务器上的文件名
* @throws IOException
*/
public void doUpload(HttpServletRequest request, String name,String fileName) throws
IOException {
InputStream in = request.getInputStream();
byte[] buffer = getFileContent(name,in);
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(buffer,0,buffer.length-1);
fos.close();
}
/**
* 获取上传的文件buffer,结尾处将多一个换行符
* @param name String 文件上传参数的名字
* @param is InputStream 服务器对话的输入流
* @return byte[] 返回获取的文件的buffer,结尾处多一个换行符
* @throws IOException
*/
private byte[] getFileContent(String name, InputStream is) throws IOException{
int index;
boolean isEnd = false;
byte[] lineSeparatorByte;
byte[] lineData;
String content_disposition;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BufferedInputStream bis = new BufferedInputStream(is);
lineSeparatorByte = readStreamLine(bis);
while(!isEnd) {
lineData = readStreamLine(bis);
if(lineData == null) {
break;
}
content_disposition = new String(lineData,"ASCII");
index = content_disposition.indexOf("name=\"" + name + "\"");
if (index >= 0 && index < content_disposition.length()) {
System.out.println(readStreamLineAsString(bis)); // skip a line
System.out.println(readStreamLineAsString(bis)); // skip a line
while ((lineData = readStreamLine(bis)) != null) {
System.out.println(new String(lineData));
if (isByteArraystartWith(lineData, lineSeparatorByte)) { // end
isEnd = true;
break;
} else {
bos.write(lineData);
}
}
}else {
lineData = readStreamLine(bis);
if(lineData == null)
return null;
System.out.println(new String(lineData,"ASCII"));
while(!isByteArraystartWith(lineData, lineSeparatorByte)) {
lineData = readStreamLine(bis);
if(lineData == null)
return null;
System.out.println(new String(lineData,"ASCII"));
}
}
}
return bos.toByteArray();
}
private byte[] readStreamLine(BufferedInputStream in) throws IOException{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int b = in.read();
if(b== -1)
return null;
while(b != -1 && b != '\n') {
bos.write(b);
b = in.read();
}
return bos.toByteArray();
}
private String readStreamLineAsString(BufferedInputStream in) throws IOException {
return new String(readStreamLine(in),"ASCII");
}
private boolean isByteArraystartWith(byte[] arr,byte[] pat) {
int i;
if(arr == null || pat == null)
return false;
if(arr.length < pat.length)
return false;
for(i=0;i<pat.length;i++) {
if(arr[i] != pat[i])
return false;
}
return true;
}
}
上传文件文件的时候,需要在之前的html中增加一个form表单,里面需要有个<input type="file" name="fileUpload" >的输入按钮。这样,浏览器才会将要上传的文件递交给服务器。 其中name="fileUpload"的名字,就是RunnningUpLoader.doUpload函数中的name参数。
使用的时候直接用bean就OK了。比如upload.jsp如下:
<jsp:useBean id="upBean" scope="page" />
<%
upBean.doUpload(request,"fileupload","runningUpLoad.txt");
%>
2. RunningDownLoader下载Bean
package testupload;
import java.io.*;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
public class RunningDownLoader {
public RunningDownLoader() {
}
public void doDownload(HttpServletResponse response, String filePath,String fileName) throws
IOException {
response.reset();//可以加也可以不加
response.setContentType("application/x-download");//设置为下载application/x-download
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
String filenamedownload = filePath;
String filenamedisplay = fileName;//系统.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");--解决下载中文文件名文件的问题
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{
output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
}
下载文件,最好是做到Servlet上。直接在Servlet的doGet下面增加如下代码即可
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
RunningDownLoader downloader= new RunningDownLoader();
downloader.doDownload(response,"E:\\MyProjects\\testupload.rar","upload.bin");
}
自己的一点心得:
我要实现一个文件下载的功能,在找到这篇文章之前,我看了jspsmart的有关文章,几行代码就可以解决下在问题,
但对下载的实现原理:确不怎么清楚,虽然以前也用servlet自己写过下载的功能 ,由于时间太长已经记不太清楚了,
现在看了整个思路都清晰了,
我们不是为了解决问题而解决问题,问题解决了你如果没有学到新的知识或经验,也许下次遇到问题的时候还是只知道到网上去baidu,却永远都打不开自己的思路,当遇到网络上没有的难题时,就手足无措了,所以永远都成不了高手,
学习原理才能举一反三.
apk命令行启动
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.
启动的方法为
# am start -n包(package)名/包名.活动(activity)名称
启动的方法可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(calculator)为例,它的
<?xml version="1.0" encoding=""?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.calculator2">
<applicationandroid:label="@string/app_name"android:icon="@drawable/icon">
<activity android:name="Calculator"
android:theme="@android:style/Theme.Black">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
由此计算器(calculator)的启动方法为:
# am start-ncom.android.calculator2/com.android.calculator2.Calculator
对于HelloActivity这个示例工程,AndroidManifest.xml如下所示:
<?xml version="1.0" encoding=""?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.helloactivity">
<application android:label="Hello, Activity!">
<activity android:name="HelloActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
由此它的启动方法为:
# am start-ncom.example.android.helloactivity/com.example.android.helloactivity.HelloActivity
其他的一些应用启动命令,如下所示:
calendar(日历)的启动方法为:
# am start-ncom.android.calendar/com.android.calendar.LaunchActivity
AlarmClock(闹钟)的启动方法为:
# am start-ncom.android.alarmclock/com.android.alarmclock.AlarmClock
Music和 Video(音乐和视频)的启动方法为:
# am start-ncom.android.music/com.android.music.MusicBrowserActivity
# am start-ncom.android.music/com.android.music.VideoBrowserActivity
# am start-ncom.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start-ncom.android.browser/com.android.browser.BrowserActivity
一般情况希望,一个Android应用对应一个工程。值得注意的是,有一些工程具有多个活动(activity),而有一些应用使用一个工程。例如:在Android界面中,Music和Video是两个应用,但是它们使用的都是packages/apps/Music这一个工程。而在这个工程的AndroidManifest.xml文件中,有包含了不同的活动(activity)。
am start -n com.cooliris.media/com.cooliris.media.com.cooliris.media.Gallery