#
--sunfruit
其实解决办法很简单
首先保证进行了正确的数字签名
然后使用java web start 发布application一定会有jnlp文件,关键就在这里
在jnlp文件里面添加
<security>
<all-permissions/>
</security>
这几行就可以了,当用户执行了app的时候,会弹出提示框提示用户是否信任xxx证书,当用户选择信任以后就可以访问本地系统了
--sunfruit
在使用java web start发布Application还有在网页上面发布Applet的时候如果不进行数字签名,那么会有安全级别的限制,并且在程序界面的最下面会有Application window 的字样,很是不爽,只要是进行了数字签名这些苦恼就没有了,而且也可以访问用户的本地IO系统,下面就说一下如何进行数据签名
其实签名过程很简单,JDK自身就有工具可以进行签名,下面的过程中 xxxx 表示该内容是自定义的
第一部生成 keystore 文件
keytool -genkey -keystore xxxx.keystore -alias xxxx 例如[keytool -genkey -keystore sunfruit.keystore -alias sunfruit]
这个过程比较繁琐,要填写好几项内容,比如生成的keystore文件为 sunfruit.keystore ,下面需要使用
第二步进行数据签名,呵呵,快吧
jarsigner -keystore sunfruit.keystore xxxx.jar sunfruit
命令行中的xxxx.jar是要进行签名的jar文件
第二步进行完毕以后,jar文件就已经签名完毕了,可以使用,当然还有一些其他的功能,比如导出cer文件
keytool -export -keystore sunfruit.keystore -alias sunfruit -file sunfruit.cer
简单吧,其实签名--就是这么简单
--sunfruit
用HttpURLConnection进行Post方式提交,下面给出一个例子
URL url = null;
HttpURLConnection httpurlconnection = null;
try
{
url = new URL("http://xxxx");
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setDoOutput(true);
httpurlconnection.setRequestMethod("POST");
String username="username=02000001";
httpurlconnection.getOutputStream().write(username.getBytes());
httpurlconnection.getOutputStream().flush();
httpurlconnection.getOutputStream().close();
int code = httpurlconnection.getResponseCode();
System.out.println("code " + code);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(httpurlconnection!=null)
httpurlconnection.disconnect();
}
其中HttpURLConnection中的addRequestProperty方法,并不是用来添加Parameter 的,而是用来设置请求的头信息,比如:
setRequestProperty("Content-type","text/html");
setRequestProperty("Connection", "close");
setRequestProperty("Content-Length",xxx);
当然如果不设置的话,可以走默认值,上面的例子中就没有进行相关设置,但是也可以正确执行
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
--sunfruit
前一段时间写了一个
[原创]JAVA中图片上叠加文字的方法,本来这方面的例子在网络上面很多,而且当时写的时候也没有遇到什么问题,所以也没有什么感觉要注意的地方
昨天由于一些原因需要在一个已有的图片上面画点,然后再显示出来,感觉上和
[原创]JAVA中图片上叠加文字的方法很类似,也就没当回事按照自己的思路就写了,很容易想到读取已存在的图片内容然后生成
ImageIcon imageIcon=new ImageIcon(bytes); 对象然后生成
Image image=imageIcon.getImage(); 对象,这个时候只要是从image实例里面获得Graphics对象就可以对图片进行编辑了但是下面这步却报错了
Graphics g =image.getGraphics(); //这步抱错:UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)
怎么调试都不行,于是google一把,发现遇到这个问题的人不少,解决办法是不能从Image对象获得Graphics,而是要从BufferedImage对象获得Graphics,于是调整思路将代码修改为
BufferedImage bufferedImage=new BufferedImage(imageIcon.getIconHeight(),imageIcon.getIconWidth(),BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics2D)bufferedImage.getGraphics();这次测试通过可以获得Graphics对象了
这里说明一点:Graphics g =image.getGraphics(); 这一步如果是从Java的图形组件里面获得的Image对象,然后获得Graphics对象就不会有问题
在已有的图片上面画图的完整例子见:
[原创]JAVA在已有图片上面画图的实例
--sunfruit
简介:JAVA在已有图片上面画图的实例,下面的程序在已有的图片上面画了一个蓝色的方块
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import java.util.Random;
import java.io.IOException;
import java.io.File;
public class ImageTest {
public ImageTest() throws Exception {
String ext="png";
FileInputStream in = new FileInputStream("已有图片的路径");
byte[] bytes = new byte[in.available()];
in.read(bytes);
in.close();
Random random=new Random(System.currentTimeMillis());
ImageIcon imageIcon = new ImageIcon(bytes);
BufferedImage bufferedImage=new BufferedImage(imageIcon.getIconHeight(),imageIcon.getIconWidth(),BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics2D)bufferedImage.getGraphics();
g.setColor(Color.blue);
g.drawRect(5,5,5,5);
g.fillRect(5,5,5,5);
g.drawImage(imageIcon.getImage(),0,0,imageIcon.getIconHeight(),imageIcon.getIconWidth(),imageIcon.getImageObserver());
String filepath = System.getProperty("java.io.tmpdir") + random.nextInt(99999) + "." + ext;
try {
ImageIO.write(bufferedImage, ext, new File(filepath));
System.out.println("文件已经生成,路经为" + filepath);
}
catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception {
new ImageTest();
}
}
--sunfruit
《谈谈心,恋恋爱》,续《
爱,直至成伤》没啥说的,下载地址
觉得好的要顶欧 : )
http://www.blogjava.net/Files/sunfruit/ttxlla.rar
--sunfruit
JDK:1.3.x以上
功能:下面是一个简单在图片上面叠加文字的方法,有朋友如果有这方面的问题,就起个了解的作用
代码如下:
import java.io.IOException;
import javax.imageio.ImageIO;
import java.io.File;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.util.Random;
/**
* <p>Title: 图片叠加文字类</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author sunfruit
* @version 1.0
*/
public class ImageAddWord {
Random random=new Random(System.currentTimeMillis());
BufferedImage buffImage=null;
Graphics2D g=null;
public ImageAddWord(int width, int height) {
buffImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
}
public ImageAddWord()
{
this(32,32);
}
/**
* 图片生成方法,如果需要在已有的图片叠加文字,需要先调用g.drawImage方法将图片绘制,再将文字绘制
* @param str String 文字内容
* @param ext String 文件后缀名 png或是jpg
*/
public void drawWord(String str,String ext)
{
g=buffImage.createGraphics();
/**
如果要在已有的图片叠加文字,这里调用g.drawImage()该方法,绘制图片,酌情去掉下面的方法
*/
g.setColor(Color.WHITE);//在已有的图片叠加文字时 该方法酌情添加
g.fillRect(0, 0, buffImage.getWidth(), buffImage.getHeight());//在已有的图片叠加文字时 该方法酌情添加
g.setColor(Color.BLACK);//设定文字颜色
g.drawString(str,0,12);
String filepath=System.getProperty("java.io.tmpdir") +random.nextInt(99999)+"." + ext;
try {
ImageIO.write(buffImage, ext,
new File(filepath));
System.out.println("文件已经生成,路经为"+filepath);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void setFont(Font font)
{
g.setFont(font);
}
public static void main(String[] args) {
ImageAddWord imageAddWord=new ImageAddWord(132,16);
String str="A B C";
imageAddWord.drawWord(str,"png");
}
}
--sunfruit
用JAVA编写的桌面程序启动的预显窗口实例
简介:
程序启动会预先显示一个预显窗口,主程序启动完毕后预显窗口关闭
欢迎大家提意见,交流
下载地址
说明:apprun.jar可以直接运行 src中是源代码
http://www.blogjava.net/Files/sunfruit/apprunmodel.rar
--sunfruit
开发web相关程序的时候总是要遇到限制用户不能使用同一个帐号同时多次登录的问题,我从三个方向对这样的问题做了监控
1,用户登录以后点击注销推出
2,用户点击IE的 X 关闭里IE窗口
3,用户的session过期
只要是监控了以上三点,就能满足绝大部分的要求,以上是一个思路,有一个缺陷,就是如果客户机突然断电,那么只有session过期了以后才能登录,这个地方是一个缺陷。
下面给出具体的实现代码,如果大家有更好的办法,欢迎交流,共同进步
http://sunfruit.bokee.com/inc/session.rar
附件说明 :
1.工程使用JB做的,使用了log4j,log4j的包在工程的WEB-INF的LIB文件夹内,取出后重新引用。
2.可以直接发布war包,直接可以测试