「javamons」javamonster
本篇文章给大家谈谈javamons,以及javamonster对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、对JAVA的两个FTP包进行比较分析
- 2、java怎样编写发送图片的程序
- 3、java的sop方法是在哪个包里面的?
- 4、实用的Java反射工具类
- 5、Java中对象按照属性排序
- 6、有哪些常见的资料库优化方法?
对JAVA的两个FTP包进行比较分析
ftp *;
这是一个不被官方支持的 但是放在JDK下面的FTP包 正因为不被支
持 所以没有官方提供API 这是其最大的缺陷之一 最重要由于不是官方支持的
所以文档也是没有的
[url]l[/url]
这里有该包的API
先给一个简单的例子 (例子来源互联网)
)显示FTP服务器上的文件
void ftpList_actionPerformed(ActionEvent e) {
String server=serverEdit getText();//输入的FTP服务器的IP地址
String user=userEdit getText(); file://登/录FTP服务器的用户名
String password=passwordEdit getText();//登录FTP服务器的用户名的口令
String path=pathEdit getText();//FTP服务器上的路径
try {
FtpClient ftpClient=new FtpClient();//创建FtpClient对象
ftpClient openServer(server);//连接FTP服务器
ftpClient login(user password);//登录FTP服务器
if (path length()!= ) ftpClient cd(path);
TelnetInputStream is=ftpClient list();
int c;
while ((c=is read())!= ) {
System out print((char) c);}
is close();
ftpClient closeServer();//退出FTP服务器
} catch (IOException ex) {;}
}
)从FTP服务器上下传一个文件
void getButton_actionPerformed(ActionEvent e) {
String server=serverEdit getText();
String user=userEdit getText();
String password=passwordEdit getText();
String path=pathEdit getText();
String filename=filenameEdit getText();
try {
FtpClient ftpClient=new FtpClient();
ftpClient openServer(server);
ftpClient login(user password);
if (path length()!= ) ftpClient cd(path);
ftpClient binary();
TelnetInputStream is=ftpClient get(filename);
File file_out=new File(filename);
FileOutputStream os=new
FileOutputStream(file_out);
byte[] bytes=new byte[ ];
int c;
while ((c=is read(bytes))!= ) {
os write(bytes c);
}
is close();
os close();
ftpClient closeServer();
} catch (IOException ex) {;}
}
)向FTP服务器上上传一个文件
void putButton_actionPerformed(ActionEvent e) {
String server=serverEdit getText();
String user=userEdit getText();
String password=passwordEdit getText();
String path=pathEdit getText();
String filename=filenameEdit getText();
try {
FtpClient ftpClient=new FtpClient();
ftpClient openServer(server);
ftpClient login(user password);
if (path length()!= ) ftpClient cd(path);
ftpClient binary();
TelnetOutputStream os=ftpClient put(filename);
File file_in=new File(filename);
FileInputStream is=new FileInputStream(file_in);
byte[] bytes=new byte[ ];
int c;
while ((c=is read(bytes))!= ){
os write(bytes c);}
is close();
os close();
ftpClient closeServer();
} catch (IOException ex) {;}
}
}
看了这个例子 应该就能用他写东西了
这个包缺点很多 首先就是不被支持也不被官方推荐使用
其次是这个包功能过于简单 简单到无法区分FTP服务器上的File是文件还是目录 有人说
通过返回的字符串来判断 但是据说FTP在不同系统下返回的东西不大一样 所以如果通过
判断字符串会有不好移植的问题
自己想出了一个办法 通过FtpClient中的cd方法来判断
代码如下
try{
ftp cd(file);//file为当前判断的文件
//如果过了说明file是目录
}
catch(IOException e){
//说明file是文件
}
finally{
ftp cd( );//返回上级目录继续判断下一文件
}
我用这种方法做过尝试 结果是只能判断正确一部分 有些目录仍会被认做文件 不知道
是我的方法有错还是别的什么原因
如果对FTP服务没有过高的要求 使用这个包还是不错的 因为他本身就包含在JDK中 不
存在CLASSPATH的问题 不需要导入外部包 较为方便
ftp *;
这个包在Jakarta Commons Net library里 现在的最高版本是 可以从以下地址
下载
[url] net [/url]
zip
里面包含了打包好的jar API 及全部的class文件
[url] net [/url]
src zip
这里包含一些例子以及全部的代码
给出一个该包的例子
import ftp *;
public static void getDataFiles( String server
String username
String password
String folder
String destinationFolder
Calendar start
Calendar end )
{
try
{
// Connect and logon to FTP Server
FTPClient ftp = new FTPClient();
nnect( server );
ftp login( username password );
System out println( Connected to +
server + );
System out print(ftp getReplyString());
// List the files in the directory
ftp changeWorkingDirectory( folder );
FTPFile[] files = ftp listFiles();
System out println( Number of files in dir: + files length );
DateFormat df = DateFormat getDateInstance( DateFormat SHORT );
for( int i= ; i
{
Date fileDate = files[ i ] getTimestamp() getTime();
if( pareTo( start getTime() ) =
pareTo( end getTime() ) = )
{
// Download a file from the FTP Server
System out print( df format( files[ i ] getTimestamp() getTime() ) );
System out println( \t + files[ i ] getName() );
File file = new File( destinationFolder +
File separator + files[ i ] getName() );
FileOutputStream fos = new FileOutputStream( file );
ftp retrieveFile( files[ i ] getName() fos );
fos close();
file setLastModified( fileDate getTime() );
}
}
// Logout from the FTP Server and disconnect
ftp logout();
ftp disconnect();
}
catch( Exception e )
{
e printStackTrace();
}
}
同 ftp相同 都是先建立FtpClient(注意两包的大小写不同)的实例 然后通过
connect()方法连接 login()方法登陆 但是 ftp *明显比sun
net ftp功能强大很多
ftp *包将FTP中的file单独出来成为了一个新类FTPFile 还有
类FTPFileEntryParser parse 没有仔细研究 但是从字面来看应该是转化为某种形势的
类 有待研究
同时这个mons net jar包中也提供了FTP服务器 telnet mail等一系列类库
ftp *包的缺点在于需要设置classpath 并且需要下载jakarta
oro jar这个包才能运行(如果没有这个包 会在ftp listFiles()方法后抛出找不
到class异常) 此包无须在代码中import 只需设置在classpath中即可 下载地址
[url] oro zip[/url]
如果想要强大的FTP服务 那么 ftp *包应该是你的最好选择 而
且也是开源 免费的
这个包的问题是:
使用Jakarta Commons Net library需要在环境变量里面编辑classpath
这是不方便的地方
lishixinzhi/Article/program/Java/hx/201311/27057
java怎样编写发送图片的程序
首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。
然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理
详细代码如下:一个form将文件信息通过post方式传送到指定的servlet
%@ page language="java" import="java.util.*" pageEncoding="utf-8"%
%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head
base %=basePath%"
titleMy JSP 'upload.jsp' starting page/title meta http-equiv="pragma" content="no-cache"
meta http-equiv="cache-control" content="no-cache" meta http-equiv="expires" content="0"
meta http-equiv="keywords" content="keyword1,keyword2,keyword3" meta http-equiv="description" content="This is my page" !--
link rel="stylesheet" type="text/css" --
/head
body
form action="/upload/UpLoad" method="post" enctype="multipart/form-data"
请选择上传的图片或文件:input type="file" name="fileName"/input type="submit" value="上传"/
/form
/body
/html
可以看到,我们将数据提交到工程下的upload/UpLoad。 之后,我们就来编写这个servlet——UpLoad.java
package load; import java.io.File;
import java.io.IOException; import java.io.PrintWriter; import java.util.List;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mons.fileupload.FileItem;
import mons.fileupload.FileUploadException; import mons.fileupload.disk.DiskFileItemFactory; import mons.fileupload.servlet.ServletFileUpload; public class UpLoad extends HttpServlet { @SuppressWarnings("unchecked") @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//为解析类提供配置信息
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建解析类的实例
ServletFileUpload sfu = new ServletFileUpload(factory);
//开始解析
sfu.setFileSizeMax(1024*400);
//每个表单域中数据会封装到一个对应的FileItem对象上 try {
ListFileItem items = sfu.parseRequest(req);
//区分表单域
for (int i = 0; i items.size(); i++) { FileItem item = items.get(i);
var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;
//isFormField为true,表示这不是文件上传表单域 if(!item.isFormField()){
ServletContext sctx = getServletContext();
//获得存放文件的物理路径
//upload下的某个文件夹 得到当前在线的用户 找到对应的文件夹
String path = sctx.getRealPath("/upload"); System.out.println(path);
//获得文件名
String fileName = item.getName(); System.out.println(fileName);
//该方法在某些平台(操作系统),会返回路径+文件名
fileName = fileName.substring(fileName.lastIndexOf("/")+1); File file = new File(path+"\\"+fileName); if(!file.exists()){ item.write(file);
//将上传图片的名字记录到数据库中
resp.sendRedirect("/upload/l"); } } }
} catch (Exception e) { e.printStackTrace(); }
}
}
因为已对 代码做了详细的注释,所以相信大家也能基本上传的这个过程。要注意的一点是解析实例空间大小的设置。我们希望上传的文件不会是无限大,因此,设置
.setFileSizeMax(1024*400);
java的sop方法是在哪个包里面的?
sop是封装的意识,系统方法里没有,这个方法是程序员自己写的,如下例子:
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class RuntimeDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
String[] mons = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月",
"十月", "十一月", "十二月" };
String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
int index = c.get(Calendar.MONTH);
int index1 = c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR) + "年");
// sop((c.get(Calendar.MONTH+1))+"月");
sop(mons[index]);
sop(c.get(Calendar.DAY_OF_MONTH) + "日");
// sop("星期"+c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index1]);
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
实用的Java反射工具类
反射的Utils函数集合
提供访问私有变量 获取泛型类型Class 提取集合中元素的属性等Utils函数
package reflection
import java lang reflect Field import java lang reflect Modifier import java lang reflect ParameterizedType import java lang reflect Type import java util ArrayList import java util Collection import java util List
import mons beanutils PropertyUtils import mons lang StringUtils import slf j Logger import slf j LoggerFactory import springframework util Assert
/** * 反射的Utils函数集合 提供访问私有变量 获取泛型类型Class 提取集合中元素的属性等Utils函数
* * @author lei */ public class ReflectionUtils {
private static Logger logger = LoggerFactory getLogger(ReflectionUtils class)
private ReflectionUtils() { }
/** * 直接读取对象属性值 无视private/protected修饰符 不经过getter函数
*/ public static Object getFieldValue(final Object object final String fieldName) { Field field = getDeclaredField(object fieldName)
if (field == null)
throw new IllegalArgumentException( Could not find field [ + fieldName + ] on target [ + object + ] )
makeAccessible(field)
Object result = null try { result = field get(object) } catch (IllegalAccessException e) { logger error( 不可能抛出的异常{} e getMessage()) } return result }
/** * 直接设置对象属性值 无视private/protected修饰符 不经过setter函数
*/ public static void setFieldValue(final Object object final String fieldName final Object value) { Field field = getDeclaredField(object fieldName)
if (field == null)
throw new IllegalArgumentException( Could not find field [ + fieldName + ] on target [ + object + ] )
makeAccessible(field)
try { field set(object value) } catch (IllegalAccessException e) { logger error( 不可能抛出的异常 {} e getMessage()) } }
/** * 循环向上转型 获取对象的DeclaredField */ protected static Field getDeclaredField(final Object object final String fieldName) { Assert notNull(object object不能为空 ) return getDeclaredField(object getClass() fieldName) }
/** * 循环向上转型 获取类的DeclaredField */ @SuppressWarnings( unchecked )
protected static Field getDeclaredField(final Class clazz final String fieldName) { Assert notNull(clazz clazz不能为空 ) Assert hasText(fieldName fieldName ) for (Class superClass = clazz superClass != Object class superClass = superClass getSuperclass()) { try { return superClass getDeclaredField(fieldName) } catch (NoSuchFieldException e) { // Field不在当前类定义 继续向上转型 } } return null }
/** * 强制转换fileld可访问
*/ protected static void makeAccessible(final Field field) { if (!Modifier isPublic(field getModifiers()) || !Modifier isPublic(field getDeclaringClass() getModifiers())) { field setAccessible(true) } }
/** * 通过反射 获得定义Class时声明的父类的泛型参数的类型 如public UserDao extends HibernateDaoUser * * @param clazz * The class to introspect * @return the first generic declaration or Object class if cannot be * determined */ @SuppressWarnings( unchecked )
public static Class getSuperClassGenricType(final Class clazz) { return getSuperClassGenricType(clazz ) }
/** * 通过反射 获得定义Class时声明的父类的泛型参数的类型 如public UserDao extends * HibernateDaoUser Long * * @param clazz * clazz The class to introspect * @param index * the Index of the generic ddeclaration start from * @return the index generic declaration or Object class if cannot be * determined */
@SuppressWarnings( unchecked )
public static Class getSuperClassGenricType(final Class clazz final int index) {
Type genType = clazz getGenericSuperclass()
if (!(genType instanceof ParameterizedType)) { logger warn(clazz getSimpleName() + s superclass not ParameterizedType ) return Object class }
Type[] params = ((ParameterizedType) genType) getActualTypeArguments()
if (index = params length || index ) { logger warn( Index + index + Size of + clazz getSimpleName() + s Parameterized Type + params length) return Object class } if (!(params[index] instanceof Class)) { logger warn(clazz getSimpleName() + not set the actual class on superclass generic parameter ) return Object class } return (Class) params[index] }
/** * 提取集合中的对象的属性 组合成List * * @param collection * 来源集合
* @param propertityName * 要提取的属性名
*/ @SuppressWarnings( unchecked )
public static List fetchElementPropertyToList(final Collection collection final String propertyName) throws Exception {
List list = new ArrayList()
for (Object obj collection) { list add(PropertyUtils getProperty(obj propertyName)) }
return list }
/** * 提取集合中的对象的属性 组合成由分割符分隔的字符串
* * @param collection * 来源集合
* @param propertityName * 要提取的属性名
* @param separator * 分隔符
*/ @SuppressWarnings( unchecked )
lishixinzhi/Article/program/Java/hx/201311/26718
Java中对象按照属性排序
项目中经常需要用到比如地区列表按照中文的拼音首字母排序 但是有时候获取到的地区列表是对象的形式 有地区id 地区名称两个属性 这里主要涉及到两个技术点
对象按属性排序 中文按拼音首字母排序 下面给出自己整理好的demo:
import java text Collator;
import java util ArrayList;
import java util Collections;
import java util Comparator;
import mons beanutils BeanComparator;
import llections ComparatorUtils;
import parators ComparableComparator;
import parators ComparatorChain;
public class CompareTipA {
private int id;
private String name;
private String age;
@SuppressWarnings( unchecked )
public static void main(String []args) {
ArrayListObject list = new ArrayListObject()
list add(new CompareTipA( 五 ))
list add(new CompareTipA( 六 ))
list add(new CompareTipA( 二 ))
list add(new CompareTipA( 四 ))
list add(new CompareTipA( 四 ))
list add(new CompareTipA( 一 ))
Comparator mycmp = ComparableComparator getInstance()
mycmp = ComparatorUtils nullLowComparator(mycmp)
//允许null
mycmp = ComparatorUtils reversedComparator(mycmp) //逆序
ArrayListObject sortFields = new ArrayListObject()
ComparatorObject parator=Collator getInstance(java util Locale CHINA)
sortFields add(new BeanComparator( name parator)) //name正序 (主)
sortFields add(new BeanComparator( id mycmp))
//id逆序 (副)
ComparatorChain multiSort = new ComparatorChain(sortFields)
Collections sort(list multiSort)
for (int i = ;ilist size() i++) {
System out println(list get(i))
//输出 /*
[id= name=二 age= ]
[id= name=六 age= ]
[id= name=四 age= ]
[id= name=四 age= ]
[id= name=五 age= ]
[id= name=一 age= ]*/
}
}
public CompareTipA(int id String age String name) {
this id = id;
this name = name;
this age = age;
}
public int getId() {
return this id;
}
public void setId(int id) {
this id = id;
}
public String getName() {
return this name;
}
public void setName(String name) {
this name = name;
}
//
public int pareTo(Object o) { //
return pare(this o) // }
public String toString() {
return [id= + this id + name= + this name + age= + this age + ] ;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this age = age;
} }
注意 需要导入的三个包 mons beanutils jar
mons collections jar
mons logging jar
lishixinzhi/Article/program/Java/hx/201311/25790
有哪些常见的资料库优化方法?
有哪些常见的资料库优化方法?
关于资料库优化,可以从以下几个方面入手:
对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
应尽量避免在 where 子句中对栏位进行 null 值判断。
应尽量避免在 where 子句中使用 != 或 操作符。
查询的时候select后面不要用*,手动把栏位名字加上。
常见的开源的资料库连线池有哪些
资料库连线池的好处是不言而喻的,现在大部分的application
server都提供自己的资料库连线池方案,此时,只要按照application server的文件说明,正确配置,即可在应用中享受到资料库连线池的好处。
但是,有些时候,我们的应用是个独立的java
application,并不是普通的WEB/J2EE应用,而且是单独执行的,不要什么application
server的配合,这种情况下,我们就需要建立自己的资料库连线池方案了。
1、 DBCP
DBCP是Apache的一个开源专案:
mons.dbcp
DBCP依赖Apache的另外2个开源专案
mons.collections和mons.pool
在专案中尝试使用了几种开源的资料库连线池实现。一种是dbcp,一种是c3p0,还有一种是proxool,这几种资料库连线池都可以很容易的在Spring配置起来。效能总体上上感觉dbcp为最优,因为稳定性和并发性都是我的专案需要的。 专案中经过反复测试,...
资料库查询优化方法
尽量少用in, not in,转用exists, not exists
注意建立索引
最常见的资料库设计方法有哪几种
常用的资料库:oracle、sqlserver、mysql、aess、sybase
优化MYSQL资料库的方法有哪些
优化MySQL资料库的方法:
:jingyan.baidu./article/4ae03de34da2ba3eff9e6b08.
与XML相容的资料库有哪些?
DB2, Oracle等多数资料库都是支援XML的。但是,DB2是其中支援最好的,DB2可以根据xml内各个栏位和属性的对xml进行查询。
Oracle 11g的资料库管理常用的有哪些方法
常见的Oracle资料库管理方法有建立和升级资料库、汇入和汇出资料、资料库的备份与恢复以及效能调优等。
常见的系统资料库有哪些?
temp(系统资料库:临时储存过程)
Master (系统储存过程)
Northwind、pubs (例项学习资料库)
Model (资料库模版)
Msdb (资讯排程)
目前全文的资料库有哪些
中国知网,万方资料库,读秀学术搜寻,超星,维普,国研网等等。我用的最多的就是这些。
javamons的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javamonster、javamons的信息别忘了在本站进行查找喔。