一个简单的java窗体下载小程序(完整代码)
java窗口设计代码

java窗口设计代码Java窗口设计代码Java窗口设计代码是指使用Java编程语言来创建和设计窗口界面的代码。
通过使用Java的窗口库,开发人员可以创建图形用户界面(GUI)并添加各种组件,如按钮、文本区域、下拉列表等,来与用户进行交互。
在下面的文章中,我将逐步介绍Java窗口设计代码的相关概念和步骤,帮助读者了解如何使用Java来创建窗口界面和与用户进行交互。
一、引入Java窗口库在使用Java窗口设计代码之前,我们首先需要引入Java窗口库。
Java提供了许多库,如AWT和Swing,用于创建窗口界面。
其中,Swing是AWT的升级版本,提供了更多的组件和功能。
要引入Swing库,我们需要在Java代码中添加以下语句:javaimport javax.swing.*;这样就可以使用Swing库提供的各种类和方法来设计窗口界面。
二、创建主窗口在Java窗口设计代码中,我们首先需要创建一个主窗口,作为整个窗口界面的容器。
可以通过继承JFrame类来创建主窗口,并使用以下代码:javapublic class MainFrame extends JFrame {public MainFrame() {设置主窗口的标题setTitle("Java窗口设计");设置主窗口的大小setSize(800, 600);设置主窗口的默认关闭操作setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置主窗口的布局setLayout(new BorderLayout());添加其他组件到主窗口...显示主窗口setVisible(true);}}在上述代码中,我们创建了一个`MainFrame`类,并继承了`JFrame`类。
然后,在`MainFrame`类的构造方法中,我们设置了主窗口的标题、大小、默认关闭操作和布局。
最后,我们添加其他组件到主窗口,并将主窗口设置为可见状态。
java解析小程序码

java解析小程序码小程序码是微信小程序的一种推广方式,用户可以通过扫描小程序码快速打开对应的小程序。
而在Java开发中,我们可以使用一些库来解析小程序码,从而获取相关的信息。
首先,我们需要引入相关的库。
在Java中,有很多开源的库可以用来解析小程序码,比如zxing、javase、jbarcode等。
这些库都提供了丰富的API,可以方便地解析小程序码。
接下来,我们需要获取小程序码的图片。
可以通过网络请求或者本地文件的方式获取小程序码的图片。
如果是网络请求,可以使用Java的HttpURLConnection或者HttpClient等库来发送请求并获取图片数据。
如果是本地文件,可以使用Java的FileInputStream来读取文件数据。
获取到小程序码的图片后,我们就可以使用相应的库来解析了。
以zxing为例,我们可以使用它提供的MultiFormatReader类来解析小程序码。
首先,我们需要将图片数据转换成Bitmap对象,然后将Bitmap对象转换成BinaryBitmap对象,最后使用MultiFormatReader的decode方法来解析。
解析后,我们可以获取到小程序码的内容。
小程序码的内容一般是一个URL,可以通过解析后的结果来获取。
我们可以使用正则表达式或者字符串处理的方式来提取URL。
除了获取小程序码的内容,我们还可以获取其他的信息,比如小程序码的宽度、高度、颜色等。
这些信息可以通过解析后的结果来获取。
在解析小程序码的过程中,我们还需要注意一些异常情况的处理。
比如图片解析失败、解析结果为空等情况,我们需要进行相应的处理,以保证程序的稳定性。
总结一下,Java解析小程序码可以通过引入相关的库来实现。
我们可以获取小程序码的图片,然后使用相应的库来解析。
解析后,我们可以获取小程序码的内容以及其他的信息。
在解析过程中,我们需要注意异常情况的处理,以保证程序的稳定性。
通过Java解析小程序码,我们可以方便地获取小程序码的相关信息,为小程序的推广和使用提供便利。
Java生成微信小程序二维码(可以指定小程序页面与动态参数)

Java⽣成微信⼩程序⼆维码(可以指定⼩程序页⾯与动态参数)⼀、准备⼯作1.2. ⼩程序的唯⼀标识(appid)3. ⼩程序的密钥(secret)⼆、获取access_token打开,在参数列表中输⼊⼩程序的appid和secret,点击检查问题,如果appid和secret正确,则可以返回正确的access_token结果(图中下⽅的红框)三、⽣成微信⼩程序⼆维码⽣成⼩程序⼆维码官⽅⽂档⼀共有三种⽣成⼆维码的⽅式,可以根据使⽤场景去选择,这⾥我使⽤的是第三种⽣成⽅式 wxacode.getUnlimitedwxacode.createQRCode获取⼩程序⼆维码,适⽤于需要的码数量较少的业务场景。
通过该接⼝⽣成的⼩程序码,永久有效,有数量限制,详见获取⼆维码。
POST https:///cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKENwxacode.get获取⼩程序码,适⽤于需要的码数量较少的业务场景。
通过该接⼝⽣成的⼩程序码,永久有效,有数量限制,详见获取⼆维码。
POST https:///wxa/getwxacode?access_token=ACCESS_TOKENwxacode.getUnlimited获取⼩程序码,适⽤于需要的码数量极多的业务场景。
通过该接⼝⽣成的⼩程序码,永久有效,数量暂⽆限制。
更多⽤法详见获取⼆维码。
POST https:///wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN使⽤wxacode.getUnlimited⽣成⼩程序⼆维码获取⼩程序码,适⽤于需要的码数量极多的业务场景。
通过该接⼝⽣成的⼩程序码,永久有效,数量暂⽆限制。
更多⽤法详见获取⼆维码。
POST https:///wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN说明通过该接⼝⽣成的⼩程序码,永久有效,数量暂⽆限制。
JAVA小程序—贪吃蛇源代码

JAVA贪吃蛇源代码SnakeGame。
javapackage SnakeGame;import javax.swing。
*;public class SnakeGame{public static void main( String[]args ){JDialog。
setDefaultLookAndFeelDecorated( true ); GameFrame temp = new GameFrame();}}Snake.javapackage SnakeGame;import java。
awt.*;import java。
util。
*;class Snake extends LinkedList{public int snakeDirection = 2;public int snakeReDirection = 4;public Snake(){this。
add( new Point( 3, 3 ));this。
add(new Point(4, 3 ));this.add( new Point(5,3 ) );this。
add( new Point(6,3 ) );this。
add(new Point(7,3 ));this。
add( new Point( 8,3 ) );this。
add( new Point( 9, 3 ));this。
add( new Point( 10,3 ));}public void changeDirection( Point temp, int direction ) {this。
snakeDirection = direction;switch(direction ){case 1://upthis.snakeReDirection = 3;this。
add( new Point(temp.x,temp.y - 1 ));break;case 2://rightthis。
java下载excel文件

java下载excel文件原代码剪切图片:修改后剪切图片:源码:public void downloadTaskModel()throws Exception{HttpServletResponse response = ToftServletContext.getContext().getResponse(); HttpServletRequest request = ToftServletContext.getContext().getRequest();String path = request.getRealPath("/");path = new String(path.getBytes("iso-8859-1"),"GBK");String matches = "[A-Za-z]:\\\\[^:?\"><*]*";if(!path.matches(matches)){throw new Exception("文件路径存在非法字符!");}path = path.replaceAll("\\\\", "/");File file = new File(path+"/templateFile/taskTemplate.xls");if(!file.isFile()||!file.exists()||file.isDirectory()){throw new Exception("下载的文件路径或文件不存在!");}//由于限制了导入模板的类型,所以在导出模板时必须限制。
if(!file.getName().matches(".*\\.(?i)(xls)$")){throw new Exception("当前模板类型有误,只能导出“.xls”格式的excel模板!"); }response.setContentType("application/x-msdownload");response.setContentLength((int)file.length());String taskNme = ClientUtils.getTimeStr(new Date(), "yyyyMMddHHmmss");response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("模板"+taskNme+".xls","UTF-8"));FileInputStream fis = new FileInputStream(file);BufferedInputStream buff = new BufferedInputStream(fis);byte b[] = new byte[1024];long k = 0 ;OutputStream myout = response.getOutputStream();while(k<file.length()){int j = buff.read(b,0,1024);k += j ;myout.write(b,0,j);}myout.flush();myout.close();}。
一个简单又有趣的JAVA小游戏代码

一个简单又有趣的JAVA小游戏代码猜数字import java.util.*;import java.io.*;public class CaiShu{public static void main(String[] args) throws IOException{Random a=new Random();int num=a.nextInt(100);System.out.println("请输入一个100以内的整数:");for (int i=0;i<=9;i++){BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String str=bf.readLine();int shu=Integer.parseInt(str);if (shu>num)System.out.println("输入的数大了,输小点的!");else if (shu<num)System.out.println("输入的数小了,输大点的!");else {System.out.println("恭喜你,猜对了!");if (i<=2)System.out.println("你真是个天才!");else if (i<=6)System.out.println("还将就,你过关了!"); else if (i<=8)System.out.println("但是你还……真笨!"); elseSystem.out.println("你和猪没有两样了!"); break;}import java.util.Scanner;import java.util.Random;public class Fangfa{static int sum,sum1=0;public static void main(String [] args){int a=1,b=1,c=1;int k=0,m=1;int money =5000;int zhu =0;boolean flag = true;Random rand = new Random();Scanner input = new Scanner(System.in);while(m==1){while(flag){System.out.println("掷色子开始!");System.out.println("请下注注:下注金额只能是50的倍数且不能超过1000"); zhu=input.nextInt();if(zhu%50==0&&zhu<=1000&&zhu<=money){System.out.println("下注成功");System.out.println("买大请输入数字1,买小输入数字2");k=input.nextInt();a= rand.nextInt(6)+1;b= rand.nextInt(6)+1;c= rand.nextInt(6)+1;sum=a+b+c;if(k==1){if(sum>9){money+=zhu;System.out.println("恭喜您猜对了,骰子点数为"+sum+"结果是大"+"余额为"+money); }else{money-=zhu;System.out.println("很遗憾,骰子点数为"+sum+"结果是小"+"余额为"+money);}}if(k==2){if(sum<=9){money+=zhu;System.out.println("恭喜您猜对了,骰子点数为"+sum+"结果是小"+"余额为"+money); }else{money-=zhu;System.out.println("很遗憾,骰子点数为"+sum+"结果是大"+"余额为"+money);}}flag= false;System.out.println("继续请按1,退出请按任意键");m=input.nextInt();if(m==1){flag=true;System.out.println("您选择的是继续");}else{flag=false;System.out.println("欢迎您下次再来玩");}}else{System.out.println("下注失败"+"余额为"+money); }}}}。
Java下载文件的四种方式详细代码

Java下载⽂件的四种⽅式详细代码1.以流的⽅式下载public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的⽂件的路径。
File file = new File(path);// 取得⽂件名。
String filename = file.getName();// 取得⽂件的后缀名。
String ext = filename.substring(stIndexOf(".") + 1).toUpperCase();// 以流的形式下载⽂件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}return response;}2.下载本地⽂件public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {// 下载本地⽂件String fileName = "Operator.doc".toString(); // ⽂件的默认保存名// 读到流中InputStream inStream = new FileInputStream("c:/Operator.doc");// ⽂件的存放路径// 设置输出的格式response.reset();response.setContentType("bin");response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");// 循环取出流中的数据byte[] b = new byte[100];int len;try {while ((len = inStream.read(b)) > 0)response.getOutputStream().write(b, 0, len);inStream.close();} catch (IOException e) {e.printStackTrace();}}3.下载⽹络⽂件public void downloadNet(HttpServletResponse response) throws MalformedURLException {// 下载⽹络⽂件int bytesum = 0;int byteread = 0;URL url = new URL("/logo.gif");try {URLConnection conn = url.openConnection();InputStream inStream = conn.getInputStream();FileOutputStream fs = new FileOutputStream("c:/abc.gif");byte[] buffer = new byte[1204];int length;while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread;System.out.println(bytesum);fs.write(buffer, 0, byteread);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}4.⽀持在线打开的⽅式public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {File f = new File(filePath);if (!f.exists()) {response.sendError(404, "File not found!");return;}BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));byte[] buf = new byte[1024];int len = 0;response.reset(); // ⾮常重要if (isOnLine) { // 在线打开⽅式URL u = new URL("file:///" + filePath);response.setContentType(u.openConnection().getContentType());response.setHeader("Content-Disposition", "inline; filename=" + f.getName());// ⽂件名应该编码成UTF-8} else { // 纯下载⽅式response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());}OutputStream out = response.getOutputStream();while ((len = br.read(buf)) > 0)out.write(buf, 0, len);br.close();out.close();}到此这篇关于Java下载⽂件的四种⽅式详细代码的⽂章就介绍到这了。
Java 小程序连连看源代码

public void reload() {
int save[] = new int[30];
int n=0,cols,rows;
int grid[][]= new int[8][7];
for(int i=0;i<=6;i++) {
for(int j=0;j<=5;j++) {
resetButton.addActionListener(this);
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(new GridLayout(6,5));
for(int cols = 0;cols < 6;cols++){
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JAVA--简单记事本源代码

JAVA--简单记事本源代码import javax.swing.JFrame;import javax.swing.JTextArea;import java.awt.*;import java.awt.event.*;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import javax.swing.*;import javax.swing.plaf.FileChooserUI;public class notepad extends JFrame implements ActionListener{//定义所需要的组件JTextArea jta=null;JMenuBar jmb=null;JMenu jm=null;JMenuItem jmi1=null;JMenuItem jmi2=null;public static void main(String[]args){new notepad();}public notepad(){//把组件添加到窗体上jta=new JTextArea();jmb=new JMenuBar();this.add(jta);this.setJMenuBar(jmb);//设置窗体属性this.setTitle("简易记事本");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(400, 300);this.setVisible(true);//把菜单添加进菜单条jm=new JMenu("⽂件");jm.setMnemonic('f');jmb.add(jm);//把⼦菜单加⼊⾄菜单jmi1=new JMenuItem("打开");jmi2=new JMenuItem("保存");jmi1.setActionCommand("open");jmi2.setActionCommand("save");jm.add(jmi1);jm.add(jmi2);//为两个字菜单注册事件监听jmi1.addActionListener(this);jmi2.addActionListener(this);}public void actionPerformed(ActionEvent e){//对点击了打开进⾏处理if(e.getActionCommand().equals("open")){//创建⼀个⽂件选择组件JFileChooser jfc1=new JFileChooser();//设置⽂件选择器的名字jfc1.setDialogTitle("请选择⽂件....");//设置⽂件选择组件的类型(打开类型)jfc1.showOpenDialog(null);//显⽰该组件jfc1.setVisible(true);//获取选择⽂件的绝对路径String s;s=jfc1.getSelectedFile().getAbsolutePath();//将该⽂件显⽰到记事本上BufferedReader br=null;FileReader fr=null;try{//创建⼀个带缓冲的⽂件读取对象fr=new FileReader(s);br=new BufferedReader(fr);String text="";String m=null;//循环读取⽂件while((m=br.readLine())!=null){text+=m+"\r\n";}//将读取的结果打印到记事本上⾯this.jta.setText(text);}catch(Exception e1){e1.printStackTrace();}finally{//关掉打开的⽂件try{br.close();fr.close();}catch(Exception e2){e2.printStackTrace();}}}else if(e.getActionCommand().equals("save")){//创建⼀个⽂件选择组件JFileChooser jfc=new JFileChooser();//设置⽂件选择的名称jfc.setDialogTitle("另存为");//设置⽂件选择组件的类型(保存类型)jfc.showSaveDialog(null);//显⽰该组件jfc.setVisible(true);//获取选择⽂件的绝对路径String filename;filename=jfc.getSelectedFile().getAbsolutePath(); //将记事本内的⽂本保存⾄该路径BufferedWriter bw=null;FileWriter fw=null;try{//创建⽂件输出⽂件fw=new FileWriter(filename);bw=new BufferedWriter(fw);//获取⽂本String outtext="";outtext=this.jta.getText();//输出⽂本fw.write(outtext);}catch(Exception e2){e2.printStackTrace();}finally{//关闭打开的输出⽂件try{bw.close();fw.close();}catch(Exception e3){e3.printStackTrace();}}}}}。
Java微信小程序开发指南使用Java开发小程序

Java微信小程序开发指南使用Java开发小程序使用Java开发微信小程序是一种强大的方式,可为开发人员提供广泛的工具和功能,以创建功能丰富、高性能的小程序。
本文将向您介绍Java微信小程序开发的指南,包括开发环境的设置、常用的开发工具和技术,以及一些开发中常见的问题和解决方法。
一、开发环境设置在开始Java微信小程序开发之前,您需要进行一些必要的开发环境设置。
首先,您需要安装Java开发工具包(JDK),并配置Java开发环境。
您可以从Oracle官方网站下载JDK安装包,并按照安装向导进行安装和设置。
安装完成后,您可以通过命令行工具(如Windows的命令提示符或Mac OS的终端)来验证您的Java环境是否已正确配置。
接下来,您需要安装开发集成工具(IDE),如Eclipse、IntelliJ IDEA等。
这些IDE提供了丰富的功能和插件,以帮助您更高效地进行Java开发。
您可以根据个人喜好选择适合自己的IDE,并按照安装向导进行设置。
二、常用的开发工具和技术在Java微信小程序开发中,有一些常用的开发工具和技术可以帮助您更好地进行开发。
以下是其中几个常用的工具和技术:1. Maven:Maven是一个项目管理工具,它可以用于构建、依赖管理和部署项目。
您可以使用Maven来管理项目的依赖库和构建过程,以提高项目的可维护性和可扩展性。
2. Spring Boot:Spring Boot是一个开发框架,它可以帮助您快速构建Java应用程序。
使用Spring Boot,您可以通过简单的配置和约定,减少繁琐的配置步骤,快速搭建起一个可运行的微信小程序。
3. MyBatis:MyBatis是一个持久化框架,它可以帮助您完成与数据库的交互。
使用MyBatis,您可以通过编写简单的SQL语句,实现对数据库的查询和修改操作。
4. 微信开发者工具:微信开发者工具是微信官方提供的一款集成开发环境,可以帮助您进行小程序的开发和调试。
Java applet(小程序)介绍

就是HelloWorld.java。而且,该类必须为java.applet.Applet的子类。
Applet类的层次
Java.applet.Applet类实际上是java.awt.Panel的子类。Applet和AWT类本节讨论了JDK对Applet的支持,以及Applet在编程方式、操作上下文和
如何开始等方面与应用程序的区别。
7.1·什么是Applet?
Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的
一种Java类。它是Java技术容器(container)的一种特定类型,其执行
格式来表示。
注-这个文件与你要装入的HTML文件的基URL有关,它不能含有路径名。
这样。在构造函数完成了它的任务后,浏览器调用init()对Applet进行
基本的初始化操作。init()结束后,浏览器调用另一个称为start()的方法。
本模块稍后将对start()做更细致的剖析;start()通常在Applet成为可见
时被调用。方法init()和start()都是在Applet成为"活动的"之前运行
stop()方法是在Applet成为不可见时被调用的,这种情况一般在浏览器被
图标化或链接到另一个URL时会出现。Applet用该方法使动画停止。
1.public void stop() {
2.musicClip.stop();
3.}
start()和stop()形成一对动作:典型地,start()激活Applet中的某一行为,
参数总是建立该Applet的panel的图形上下文。你能用这个上下文在你的
Java后台Controller实现文件下载操作

Java后台Controller实现⽂件下载操作代码参数:1.filePath:⽂件的绝对路径(d:\download\a.xlsx)2.fileName(a.xlsx)3.编码格式(GBK)4.response、request不介绍了,从控制器传⼊的http对象代码⽚.//控制器@RequestMapping(UrlConstants.BLACKLIST_TESTDOWNLOAD)public void downLoad(String filePath, HttpServletResponse response, HttpServletRequest request) throws Exception {boolean is = myDownLoad("D:\\a.xlsx","a.xlsx","GBK",response,request);if(is)System.out.println("成功");elseSystem.out.println("失败");}//下载⽅法public boolean myDownLoad(String filePath,String fileName, String encoding, HttpServletResponse response, HttpServletRequest request){ File f = new File(filePath);if (!f.exists()) {try {response.sendError(404, "File not found!");} catch (IOException e) {e.printStackTrace();}return false;}String type = fileName.substring(stIndexOf(".") + 1);//判断下载类型 xlsx 或 xls 现在只实现了xlsx、xls两个类型的⽂件下载if (type.equalsIgnoreCase("xlsx") || type.equalsIgnoreCase("xls")){response.setContentType("application/force-download;charset=UTF-8");final String userAgent = request.getHeader("USER-AGENT");try {if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Edge")) {// IE浏览器fileName = URLEncoder.encode(fileName, "UTF8");} else if (StringUtils.contains(userAgent, "Mozilla")) {// google,⽕狐浏览器fileName = new String(fileName.getBytes(), "ISO8859-1");} else {fileName = URLEncoder.encode(fileName, "UTF8");// 其他浏览器}response.setHeader("Content-disposition", "attachment; filename=" + fileName);} catch (UnsupportedEncodingException e) {logger.error(e.getMessage(), e);return false;}InputStream in = null;OutputStream out = null;try {//获取要下载的⽂件输⼊流in = new FileInputStream(filePath);int len = 0;//创建数据缓冲区byte[] buffer = new byte[1024];//通过response对象获取outputStream流out = response.getOutputStream();//将FileInputStream流写⼊到buffer缓冲区while((len = in.read(buffer)) > 0) {//使⽤OutputStream将缓冲区的数据输出到浏览器out.write(buffer,0,len);}//这⼀步⾛完,将⽂件传⼊OutputStream中后,页⾯就会弹出下载框} catch (Exception e) {logger.error(e.getMessage(), e);return false;} finally {try {if (out != null)out.close();if(in!=null)in.close();} catch (IOException e) {logger.error(e.getMessage(), e);}}return true;}else {logger.error("不⽀持的下载类型!");return false;}}实现效果1.⽕狐浏览器效果2.chrome效果,⾃动下载补充知识:⽂件上传/下载的⼏种写法(java后端)⽂件上传1、框架已经帮你获取到⽂件对象File了public boolean uploadFileToLocale(File uploadFile,String filePath) { boolean ret_bl = false;try {InputStream in = new FileInputStream(uploadFile);ret_bl=copyFile(in,filePath);} catch (Exception e) {e.printStackTrace();}return ret_bl;}public boolean copyFile(InputStream in,String filePath) {boolean ret_bl = false;FileOutputStream os=null;try {os = new FileOutputStream(filePath,false);byte[] b = new byte[8 * 1024];int length = 0;while ((length = in.read(b)) > 0) {os.write(b, 0, length);}os.close();in.close();ret_bl = true;} catch (Exception e) {e.printStackTrace();}finally{try {if(os!=null){os.close();}if(in!=null){in.close();}} catch (IOException e) {e.printStackTrace();}}return ret_bl;}}2、天了个撸,SB架构师根本就飘在天空没下来,根本就没想⽂件上传这⼀回事public String uploadByHttp(HttpServletRequest request) throws Exception{String filePath=null;List<String> fileNames = new ArrayList<>();//创建⼀个通⽤的多部分解析器CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());//判断 request 是否有⽂件上传,即多部分请求if(multipartResolver.isMultipart(request)){//转换成多部分requestMultipartHttpServletRequest multiRequest =multipartResolver.resolveMultipart(request);MultiValueMap<String,MultipartFile> multiFileMap = multiRequest.getMultiFileMap();List<MultipartFile> fileSet = new LinkedList<>();for(Entry<String, List<MultipartFile>> temp : multiFileMap.entrySet()){fileSet = temp.getValue();}String rootPath=System.getProperty("user.dir");for(MultipartFile temp : fileSet){filePath=rootPath+"/tem/"+temp.getOriginalFilename();File file = new File(filePath);if(!file.exists()){file.mkdirs();}fileNames.add(temp.getOriginalFilename());temp.transferTo(file);}}}3、神啊,我正在撸框架,请问HttpServletRequest怎么获取(1)在web.xml中配置⼀个监听<listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>(2)HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();⽂件下载(直接⽤链接下载的不算),这⽐较简单1、本地⽂件下载(即⽂件保存在本地)public void fileDownLoad(HttpServletRequest request,HttpServletResponse response,String fileName,String filePath) throws Exception {response.setCharacterEncoding("UTF-8");//设置ContentType字段值response.setContentType("text/html;charset=utf-8");//通知浏览器以下载的⽅式打开response.addHeader("Content-type", "appllication/octet-stream");response.addHeader("Content-Disposition", "attachment;filename="+fileName);//通知⽂件流读取⽂件InputStream in = request.getServletContext().getResourceAsStream(filePath);//获取response对象的输出流OutputStream out = response.getOutputStream();byte[] buffer = new byte[1024];int len;//循环取出流中的数据while((len = in.read(buffer)) != -1){out.write(buffer,0,len);}}2、远程⽂件下载(即⽹上资源下载,只知道⽂件URI)public static void downLoadFromUrl(String urlStr,String fileName,HttpServletResponse response){try {urlStr=urlStr.replaceAll("\\\\", "/");URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置超时间为3秒conn.setConnectTimeout(3*1000);//防⽌屏蔽程序抓取⽽返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输⼊流InputStream inputStream = conn.getInputStream();response.reset();response.setContentType("application/octet-stream; charset=utf-8");response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"),"ISO8859_1"));//获取响应报⽂输出流对象//获取response对象的输出流OutputStream out = response.getOutputStream();byte[] buffer = new byte[1024];int len;//循环取出流中的数据while((len = in.read(buffer)) != -1){out.write(buffer,0,len);}} catch (Exception e) {e.printStackTrace();}}以上这篇Java后台Controller实现⽂件下载操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
java简易小游戏制作代码

java简易⼩游戏制作代码java简易⼩游戏制作游戏思路:设置⼈物移动,游戏规则,积分系统,随机移动的怪物,游戏胜负判定,定时器。
游戏内容部分package 代码部分;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;public class TestGamePanel extends JPanel implements KeyListener, ActionListener {//初始化⼈物坐标int p1X;int p1Y;int p2X;int p2Y;boolean isStart = false; //游戏是否开始boolean p1isFail = false; //游戏是否失败boolean p2isFail = false;String fx1; //左:L,右:R,上:U,下:DString fx2;Timer timer = new Timer(50,this);//定时器//积分int p1score = 0;int p2score = 0;//苹果int AppleX;int AppleY;//怪物int monster1X;int monster1Y;int monster2X;int monster2Y;int monster3X;int monster3Y;int monster4X;int monster4Y;int monster5X;int monster5Y;//随机积分Random random = new Random();public TestGamePanel() {init();this.setFocusable(true);this.addKeyListener(this);timer.start();}//初始化public void init() {p1X = 25;p1Y = 150;p2X = 700;p2Y = 550;fx1 = "L";fx2 = "R";monster1X = 25*random.nextInt(28);monster1Y = 100 + 25*random.nextInt(18);monster2X = 25*random.nextInt(28);monster2Y = 100 + 25*random.nextInt(18);monster3X = 25*random.nextInt(28);monster3Y = 100 + 25*random.nextInt(18);monster4X = 25*random.nextInt(28);monster4Y = 100 + 25*random.nextInt(18);monster5X = 25*random.nextInt(28);monster5Y = 100 + 25*random.nextInt(18);AppleX = 25*random.nextInt(28);AppleY = 100 + 25*random.nextInt(18);add(kaishi);add(chongkai);guize.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new TestGameRule();}});}//游戏功能按钮JButton kaishi = new JButton("开始");JButton chongkai = new JButton("重新开始");JButton guize = new JButton("游戏规则");//画板@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);TestGameData.header.paintIcon(this,g,0,0);g.setColor(Color.CYAN);g.fillRect(0,100,780,520);//画⼈物TestGameData.p1player1.paintIcon(this,g,p1X,p1Y);TestGameData.p2player1.paintIcon(this,g,p2X,p2Y);//画得分g.setFont(new Font("华⽂彩云",Font.BOLD,18)); //设置字体g.setColor(Color.RED);g.drawString("玩家1:" + p1score,20,20 );g.drawString("玩家2:" + p2score,680,20);//画苹果TestGameData.apple.paintIcon(this,g,AppleX,AppleY);//画静态怪物TestGameData.monster.paintIcon(this,g,monster1X,monster1Y);TestGameData.monster.paintIcon(this,g,monster2X,monster2Y);TestGameData.monster.paintIcon(this,g,monster3X,monster3Y);TestGameData.monster.paintIcon(this,g,monster4X,monster4Y);TestGameData.monster.paintIcon(this,g,monster5X,monster5Y);//游戏提⽰,是否开始if(!isStart) {g.setColor(Color.BLACK);g.setFont(new Font("华⽂彩云",Font.BOLD,30));g.drawString("请点击开始游戏",300,300);}//游戏结束提⽰,是否重新开始if(p2isFail || p1score == 15) {g.setColor(Color.RED);g.setFont(new Font("华⽂彩云",Font.BOLD,30));g.drawString("玩家⼀获胜,请点击重新开始游戏",200,300);if(p1isFail || p2score == 15) {g.setColor(Color.RED);g.setFont(new Font("华⽂彩云",Font.BOLD,30));g.drawString("玩家⼆获胜,请点击重新开始游戏",200,300); }}//键盘监听事件@Overridepublic void keyPressed(KeyEvent e) {//控制⼈物⾛动//玩家1if(isStart == true && (p1isFail == false && p2isFail == false)) { if(e.getKeyCode() == KeyEvent.VK_D) {fx1 = "R";p1X += 25;if(p1X >= 750) {p1X = 750;}}else if(e.getKeyCode() == KeyEvent.VK_A) {fx1 = "L";p1X -= 25;if(p1X <= 0) {p1X = 0;}}else if(e.getKeyCode() == KeyEvent.VK_W) {fx1 = "U";p1Y -= 25;if(p1Y <= 100) {p1Y = 100;}}else if(e.getKeyCode() == KeyEvent.VK_S) {fx1 = "D";p1Y += 25;if(p1Y >= 600) {p1Y = 600;}}//玩家2if(e.getKeyCode() == KeyEvent.VK_RIGHT) {fx2 = "R";p2X += 25;if(p2X >= 750) {p2X = 750;}}else if(e.getKeyCode() == KeyEvent.VK_LEFT) {fx2 = "L";p2X -= 25;if(p2X <= 0) {p2X = 0;}}else if(e.getKeyCode() == KeyEvent.VK_UP) {fx2 = "U";p2Y -= 25;if(p2Y <= 100) {p2Y = 100;}}else if(e.getKeyCode() == KeyEvent.VK_DOWN) {fx2 = "D";p2Y += 25;if(p2Y >= 600) {p2Y = 600;}}}repaint();}@Overridepublic void actionPerformed(ActionEvent e) {kaishi.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {isStart = true;}});chongkai.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if(p1isFail) { p1isFail = !p1isFail; init(); }if(p2isFail) { p2isFail = !p2isFail; init(); }}});add(kaishi);add(chongkai);add(guize);if(isStart == true && (p1isFail == false && p2isFail == false)) { //让⼈动起来if(fx1.equals("R")) {p1X += 25;if(p1X >= 750) { p1X = 750; }}if(fx1.equals("L")) {p1X -= 25;if(p1X <= 0) { p1X = 0; }}if(fx1.equals("U")) {p1Y -= 25;if(p1Y <= 100) { p1Y = 100; }}if(fx1.equals("D")) {p1Y += 25;if(p1Y >= 600) { p1Y = 600; }}if(fx2.equals("R")) {p2X += 25;if(p2X >= 750) { p2X = 750; }}if(fx2.equals("L")) {p2X -= 25;if(p2X <= 0) { p2X = 0; }}if(fx2.equals("U")) {p2Y -= 25;if(p2Y <= 100) { p2Y = 100; }}if(fx2.equals("D")) {p2Y += 25;if(p2Y >= 600) { p2Y = 600; }}//让怪物动起来//怪物1int i = random.nextInt(4) + 1;if(i == 1) {monster1X += 5;if(monster1X >= 750) {monster1X = 750;}}if(i == 2) {monster1X -= 5;if(monster1X <= 0) {monster1X = 0;}}if(i == 3) {monster1Y += 5;if(monster1Y >= 600) {monster1Y = 600;}if(i == 4) {monster1Y -= 5;if(monster1Y <= 100) {monster1Y = 100;}}//怪物2int j = random.nextInt(4) + 1;if(j == 1) {monster2X += 5;if(monster2X >= 750) {monster2X = 750;}}if(j == 2) {monster2X -= 5;if(monster2X <= 0) {monster2X = 0;}}if(j == 3) {monster2Y += 5;if(monster2Y >= 600) {monster2Y = 600;}}if(j == 4) {monster2Y -= 5;if(monster2Y <= 100) {monster2Y = 100;}}//怪物3int k = random.nextInt(4) + 1;if(k == 1) {monster3X += 5;if(monster3X >= 750) {monster3X = 750;}}if(k == 2) {monster3X -= 5;if(monster3X <= 0) {monster3X = 0;}}if(k == 3) {monster3Y += 5;if(monster3Y >= 600) {monster3Y = 600;}}if(k == 4) {monster3Y -= 5;if(monster3Y <= 100) {monster3Y = 100;}}//怪物4int n= random.nextInt(4) + 1;if(n == 1) {monster4X += 5;if(monster4X >= 750) {monster4X = 750;}}if(n == 2) {monster4X -= 5;if(monster4X <= 0) {monster4X = 0;}}if(n == 3) {monster4Y += 5;if(monster4Y >= 600) {monster4Y = 600;}}if(n == 4) {monster4Y -= 5;if(monster4Y <= 100) {monster4Y = 100;}}//怪物5int m = random.nextInt(4) + 1;if(m == 1) {monster5X += 5;if(monster5X >= 750) {monster5X = 750;}}if(m == 2) {monster5X -= 5;if(monster5X <= 0) {monster5X = 0;}}if(m == 3) {monster5Y += 5;if(monster5Y >= 600) {monster5Y = 600;}}if(m == 4) {monster5Y -= 5;if(monster5Y <= 100) {monster5Y = 100;}}//如果有玩家吃到⾷物if(p1X == AppleX && p1Y == AppleY) {p1score++;AppleX = 25*random.nextInt(28);AppleY = 100 + 25*random.nextInt(18);} else if(p2X == AppleX && p2Y == AppleY) {p2score++;AppleX = 25*random.nextInt(28);AppleY = 100 + 25*random.nextInt(18);}//如果有玩家碰到怪物,判定死亡,游戏结束后续有修改,暂⽤ //怪物1死亡if(p1X >= monster1X -25 && p1X <= monster1X +25) {if(p1Y == monster1Y) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p1Y >= monster1Y -25 && p1Y <= monster1Y +25) {if(p1X == monster1X) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p2X >= monster1X -25 && p2X <= monster1X +25) {if(p2Y == monster1Y) { p2isFail = !p2isFail; p1score = p2score = 0;} }if(p2Y >= monster1Y -25 && p2Y <= monster1Y +25) {if(p2X == monster1X) { p2isFail = !p2isFail; p1score = p2score = 0;} }//怪物2死亡if(p1X >= monster2X -25 && p1X <= monster2X +25) {if(p1Y == monster2Y) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p1Y >= monster2Y -25 && p1Y <= monster2Y +25) {if(p1X == monster2X) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p2X >= monster2X -25 && p2X <= monster2X +25) {if(p2Y == monster2Y) { p2isFail = !p2isFail; p1score = p2score = 0;} }if(p2Y >= monster2Y -25 && p2Y <= monster2Y +25) {if(p2X == monster2X) { p2isFail = !p2isFail; p1score = p2score = 0;} }//怪物3死亡if(p1X >= monster3X -25 && p1X <= monster3X +25) {if(p1Y == monster3Y) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p1Y >= monster3Y -25 && p1Y <= monster3Y +25) {if(p1X == monster3X) { p1isFail = !p1isFail; p1score = p2score = 0;} }if(p2X >= monster3X -25 && p2X <= monster3X +25) {if(p2Y == monster3Y) { p2isFail = !p2isFail; p1score = p2score = 0;}if(p2Y >= monster3Y -25 && p2Y <= monster3Y +25) {if(p2X == monster3X) { p2isFail = !p2isFail; p1score = p2score = 0;}}//怪物4死亡if(p1X >= monster4X -25 && p1X <= monster4X +25) {if(p1Y == monster4Y) { p1isFail = !p1isFail; p1score = p2score = 0;}}if(p1Y >= monster4Y -25 && p1Y <= monster4Y +25) {if(p1X == monster1X) { p1isFail = !p1isFail; p1score = p2score = 0;}}if(p2X >= monster4X -25 && p2X <= monster4X +25) {if(p2Y == monster4Y) { p2isFail = !p2isFail; p1score = p2score = 0;}}if(p2Y >= monster4Y -25 && p2Y <= monster4Y +25) {if(p2X == monster4X) { p2isFail = !p2isFail; p1score = p2score = 0;}}//怪物5死亡if(p1X >= monster5X -25 && p1X <= monster5X +25) {if(p1Y == monster5Y) { p1isFail = !p1isFail; p1score = p2score = 0;}}if(p1Y >= monster5Y -25 && p1Y <= monster5Y +25) {if(p1X == monster5X) { p1isFail = !p1isFail; p1score = p2score = 0;}}if(p2X >= monster5X -25 && p2X <= monster5X +25) {if(p2Y == monster5Y) { p2isFail = !p2isFail; p1score = p2score = 0;}}if(p2Y >= monster5Y -25 && p2Y <= monster5Y+25) {if(p2X == monster5X) { p2isFail = !p2isFail; p1score = p2score = 0;}}//如果有玩家达到指定积分,判定获胜,游戏结束if(p1score == 15) { p2isFail = !p2isFail; }if(p2score == 15) { p1isFail = !p1isFail; }repaint();}timer.start();}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyReleased(KeyEvent e) {}}游戏规则(使⽤弹窗)部分package 代码部分;import javax.swing.*;import java.awt.*;public class TestGameRule extends JDialog {private int num = 1;public TestGameRule() {TextArea textArea = new TextArea(20,10);textArea.setText("游戏中有五个怪物随机移动,碰到怪物算死亡\\\n游戏中有随机出现的苹果,碰到⼀个苹果加⼀分,\\\n先达到⼗五分或者对⼿死亡算游戏胜利!"); JScrollPane jScrollPane = new JScrollPane(textArea);this.add(jScrollPane);this.setBounds(200,200,400,400);this.setVisible(true);textArea.setEditable(false);setResizable(false);textArea.setBackground(Color.PINK);}}图⽚素材package 代码部分;import javax.swing.*;import .URL;public class TestGameData {public static URL headerurl = TestGameData.class.getResource("/图⽚素材/header.jpg");public static URL p1player1url = TestGameData.class.getResource("/图⽚素材/1.jpg");public static URL p2player2url = TestGameData.class.getResource("/图⽚素材/2.jpg");public static URL appleurl = TestGameData.class.getResource("/图⽚素材/apple.jpg");public static URL monsterurl = TestGameData.class.getResource("/图⽚素材/monster.jpg");public static ImageIcon p1player1 = new ImageIcon(p1player1url);public static ImageIcon p2player1 = new ImageIcon(p2player2url);public static ImageIcon header = new ImageIcon(headerurl);public static ImageIcon apple = new ImageIcon(appleurl);public static ImageIcon monster = new ImageIcon(monsterurl);}主函数package 代码部分;import javax.swing.*;public class TestStartGame {public static void main(String[] args) {//制作窗⼝JFrame jFrame = new JFrame("2D对战⼩游戏");jFrame.setBounds(10,10,790,660);jFrame.setResizable(false);jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//添加游戏⾯板jFrame.add(new TestGamePanel());//设置可见jFrame.setVisible(true);}}实现效果到此这篇关于java简易⼩游戏制作代码的⽂章就介绍到这了,更多相关java简易⼩游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
java实现文件下载.

在BlogJava上已经有一位作者阐述了文件上传的问题, 地址是在Struts 2中实现文件上传 , 因此我就不再讨论那个话题了。
我今天简单介绍一下Struts 2的文件下载问题。
我们的项目名为 struts2hello ,所使用的开发环境是MyEclipse 6,当然其实用哪个 IDE 都 是一样的,只要把类库放进去就行了,文件下载不需要再加入任何额外的包。
读者可以参考 文档:http://beansoft.java/myeclipse_doc_cn/struts2_demo.pdf ,来了解怎么下载 和配置基本的 Struts 2开发环境。
为了便于大家对比,我把完整的 struts.xml 的配置信息列出来:Xml代码1 <?xml version="1.0" encoding="UTF-8" ?>2 <!DOCTYPE struts PUBLIC3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"4 "/dtds/struts-2.0.dtd">56 <struts>7 <package name="default" extends="struts-default" >8 <!-- 在这里添加 Action 定义 -->910 <!-- 简单文件下载 -->11 <action name="download" class="example.FileDownloadAction">12 <result name="success" type="stream">13 <param name="contentType">text/plain</param>14 <param name="inputName">inputStream</param>15 <paramname="contentDisposition">attachment;filename="struts2中文.txt"</param>16 <param name="bufferSize">4096</param>17 </result>18 </action>1920 <!-- 文件下载,支持中文附件名 -->21 <action name="download2" class="example.FileDownloadAction2">22 <!-- 初始文件名 -->23 <param name="fileName">Struts 中文附件.txt</param>24 <result name="success" type="stream">25 <param name="contentType">text/plain</param>26 <param name="inputName">inputStream</param>27 <!-- 使用经过转码的文件名作为下载文件名, downloadFileName属性28 对应 action类中的方法 getDownloadFileName() -->29 <paramname="contentDisposition">attachment;filename="${downloadFileName}"</param>30 <param name="bufferSize">4096</param>31 </result>32 </action>3334 <!-- 下载现有文件 -->35 <action name="download3" class="example.FileDownloadAction3">36 <param name="inputPath">/download/系统说明.doc</param>37 <!-- 初始文件名 -->38 <param name="fileName">系统说明.doc</param>39 <result name="success" type="stream">40 <paramname="contentType">application/octet-stream;charset=ISO8859-1</param>41 <param name="inputName">inputStream</param>42 <!-- 使用经过转码的文件名作为下载文件名, downloadFileName属性43 对应 action类中的方法 getDownloadFileName() -->44 <paramname="contentDisposition">attachment;filename="${downloadFileName}"</param>45 <param name="bufferSize">4096</param>46 </result>47 </action>4849 </package>5051 </struts>Xml代码52 <?xml version="1.0" encoding="UTF-8" ?>53 <!DOCTYPE struts PUBLIC54 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"55 "/dtds/struts-2.0.dtd">5657 <struts>58 <package name="default" extends="struts-default" >59 <!-- 在这里添加 Action 定义 -->6061 <!-- 简单文件下载 -->62 <action name="download" class="example.FileDownloadAction">63 <result name="success" type="stream">64 <param name="<SPAN class=hilite3><SPANstyle="BACKGROUND-COLOR:#aaffaa">contentType</SPAN></SPAN>">text/plain</param>65 <param name="inputName">inputStream</param>66 <paramname="contentDisposition">attachment;filename="<SPAN class=hilite1><SPANstyle="BACKGROUND-COLOR: #ffff00">struts2</SPAN></SPAN>中文.txt"</param>67 <param name="bufferSize">4096</param>68 </result>69 </action>7071 <!-- 文件下载,支持中文附件名 -->72 <action name="download2" class="example.FileDownloadAction2">73 <!-- 初始文件名 -->74 <param name="fileName">Struts 中文附件.txt</param>75 <result name="success" type="stream">76 <param name="<SPAN class=hilite3><SPANstyle="BACKGROUND-COLOR:#aaffaa">contentType</SPAN></SPAN>">text/plain</param>77 <param name="inputName">inputStream</param>78 <!-- 使用经过转码的文件名作为下载文件名, downloadFileName 属性79 对应 action类中的方法 getDownloadFileName() -->80 <paramname="contentDisposition">attachment;filename="${downloadFileName}"</param>81 <param name="bufferSize">4096</param>82 </result>83 </action>8485 <!-- 下载现有文件 -->86 <action name="download3" class="example.FileDownloadAction3">87 <param name="inputPath">/download/系统说明.<SPANclass=hilite5>doc</SPAN></param>88 <!-- 初始文件名 -->89 <param name="fileName">系统说明.<SPANclass=hilite5>doc</SPAN></param>90 <result name="success" type="stream">91 <param name="<SPAN class=hilite3><SPANstyle="BACKGROUND-COLOR:#aaffaa">contentType</SPAN></SPAN>">application/octet-stream;charset=ISO885 9-1</param>92 <param name="inputName">inputStream</param>93 <!-- 使用经过转码的文件名作为下载文件名, downloadFileName 属性94 对应 action类中的方法 getDownloadFileName() -->95 <paramname="contentDisposition">attachment;filename="${downloadFileName}"</param>96 <param name="bufferSize">4096</param>97 </result>98 </action>99100 </package>101102</struts>Struts 2中对文件下载做了直接的支持,相比起自己辛辛苦苦的设置种种HTTP 头来说,现 在实现文件下载无疑要简便的多。
java小程序源代码

import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;class CalculatorPanel extends JPanel implements ActionListener{public CalculatorPanel(){setLayout(new BorderLayout());display=new JTextField("0");display.setEditable(false);add(display,"Center");ope=new JTextField(" ");ope.setEditable(false);add(ope,"West");//创建菜单栏(暂时无实际意义)JMenuBar bar=new JMenuBar();add(bar,"North");JMenu view=new JMenu("查看(V)");JMenu edit=new JMenu("编辑(E)");JMenu help=new JMenu("帮助(H)");bar.add(view);bar.add(edit);bar.add(help);JMenuItem newItem=new JMenuItem("标准型(V)");JMenuItem newItem2=new JMenuItem("科学型(S)");JMenuItem newItem3=new JMenuItem("退出(E)");JMenuItem newItem4=new JMenuItem("关于..");view.add(newItem);view.add(newItem2);view.add(newItem3);help.add(newItem4);newItem4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null,"本程序由射手同学独立完成,请任何时候保留此句!");}});newItem3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {int res;res=JOptionPane.showConfirmDialog(null, "确定退出?", "退出", JOptionPane.YES_NO_OPTION);if(res==JOptionPane.YES_OPTION) System.exit(0);}});JPanel p=new JPanel();p.setLayout(new GridLayout(4,4));String buttons="789/456*123-0.=+";for (int i=0;i<buttons.length();i++)addButton(p,buttons.substring(i,i+1));add(p,"South");}private void addButton(Container c,String s){JButton b=new JButton(s);// b.setSize()c.add(b);b.addActionListener(this);}public void actionPerformed(ActionEvent evt){String s=evt.getActionCommand();if ('0'<=s.charAt(0)&&s.charAt(0)<='9'){if(start)display.setText(s);else display.setText(display.getText()+s);start=false;}else//输入的是运算符,进行四则运算{double x=Double.parseDouble(display.getText());calculate(x);op=s;ope.setText(op);start=true;//重置文本框}}public void calculate(double n){if(op.equals("+")) arg+=n;else if (op.equals("-")) arg -=n;else if (op.equals("*")) arg*=n;else if (op.equals("/")) arg/=n;else if (op.equals("=")) arg=n;display.setText(""+arg);}//数据重置private boolean start=true;//是否是第一个输入private String op="=";//运算符private double arg=0;//运算结果private JTextField display;private JTextField ope;}class CalculatorFrame extends JFrame{public CalculatorFrame(){setTitle("Calculator");setLocation(500,200);setSize(200,200);setResizable(true);//关闭窗口事件响应,有两种方法setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 或者如下所示方法二// addWindowListener(new WindowAdapter()// {// public void windowClosing(WindowEvent e)// {// System.exit(0);// }//// });Container contentPane=getContentPane();contentPane.add(new CalculatorPanel());}}public class Calculator_2{ public static void main(String[] args) {JFrame frame=new CalculatorFrame(); frame.show();Calculator_2 a=new Calculator_2(); }}。
java后台实现excel文件下载功能

java后台实现excel⽂件下载功能 java中对于excel⽂件的操作,有读取,写⼊,上传等功能,在对excel⽂件进⾏操作时,为了让使⽤者更加直观的制作excel数据,必然会有下载模板excel⽂件功能,这⾥以学⽣基本信息模板excel⽂件为例,实现对指定路径下的excel⽂件进⾏下载的后台代码。
对excel⽂件的操作使⽤到poi接⼝,对于不同拓展名的excel⽂件调⽤不同的对象,maven导⼊jar包语句可以参考。
我们在这⾥操作的对象是.xlsx格式的excel⽂件。
代码如下:/*** 学⽣excel模板下载,可⽤于批量新建,修改学⽣对象,** @param response* @param request* @return*/@RequestMapping(value = "downLoadStuInfoExcel", produces = "text/html;charset=UTF-8")public void downLoadStuInfoExcel(HttpServletResponse response, HttpServletRequest request) {JSONObject rt = new JSONObject();//json对象,⽤来记录下载状态值,写⼊log中,也可以把状态值返回到前台,这⼀部分可有可⽆。
rt.put("status", "1");rt.put("message", "");rt.put("result", "");//学⽣新建excel下载模板保存地址从配置⽂件中读取String folderPath = ResourceBundle.getBundle("systemconfig").getString("stuExcelDownLoadPath") + File.separator + "stuTemplateExcel.xlsx";File excelFile = new File(folderPath);//判断模板⽂件是否存在if (!excelFile.exists() || !excelFile.isFile()) {rt.put("status", "0");rt.put("message", "模板⽂件不存在");// return rt.toJSONString();}//⽂件输⼊流FileInputStream fis = null;XSSFWorkbook wb = null;//使⽤XSSFWorkbook对象读取excel⽂件try {fis = new FileInputStream(excelFile);wb = new XSSFWorkbook(fis);fis.close();} catch (Exception e) {e.printStackTrace();rt.put("status", "0");rt.put("message", "模板⽂件读取失败");// return rt.toJSONString();}//设置contentType为vnd.ms-excelresponse.setContentType("application/vnd.ms-excel;charset=utf-8");response.setCharacterEncoding("utf-8");// 对⽂件名进⾏处理。
java下载Excel模板(工具类)

java下载Excel模板(⼯具类) ⼀次⽂件下载记录 ⼀次不成熟的⽂件下载操作记录,希望能对需要的⼈有所帮助。
1.前端代码$("#downloadModel").click(function(){ var modelName = "设备信息导⼊模板.xls"; window.location.href = commenUrl +"/importAndExport/downloadModel?modelName="+modelName;});2.控制层接收1 @RequestMapping(value = "/downloadModel", method = RequestMethod.GET)2public void downloadModel(HttpServletRequest request,HttpServletResponse response,String modelName) {3try {4 importAndExportService.downloadModel(modelName,request,response);5 } catch (Exception e) {6 e.printStackTrace();7 }8 }3.实现下载功能 @SuppressWarnings("resource")@Overridepublic void downloadBindModel(String modelName, HttpServletRequest request,HttpServletResponse response) throws Exception {//获取模板存放的路径String path=request.getSession().getServletContext().getRealPath("/")+"/excelTemplate/";InputStream is=new FileInputStream(new File(path + modelName));HSSFWorkbook hssfWorkbook=new HSSFWorkbook(is);//下载DownloadUtil dUtil=new DownloadUtil();ByteArrayOutputStream os=new ByteArrayOutputStream();hssfWorkbook.write(os);dUtil.download(os, response, modelName);os.flush();os.close();is.close();}4.⼯具类代码public class DownloadUtil{/*** @param filePath 要下载的⽂件路径* @param returnName 返回的⽂件名* @param response HttpServletResponse* @param delFlag 是否删除⽂件*/protected void download(String filePath, String returnName, HttpServletResponse response, boolean delFlag){this.prototypeDownload(new File(filePath), returnName, response, delFlag);}/*** @param file 要下载的⽂件* @param returnName 返回的⽂件名* @param response HttpServletResponse* @param delFlag 是否删除⽂件*/protected void download(File file,String returnName,HttpServletResponse response,boolean delFlag){this.prototypeDownload(file, returnName, response, delFlag);}/*** @param file 要下载的⽂件* @param returnName 返回的⽂件名* @param response HttpServletResponse* @param delFlag 是否删除⽂件*/public void prototypeDownload(File file,String returnName,HttpServletResponse response,boolean delFlag){// 下载⽂件FileInputStream inputStream = null;ServletOutputStream outputStream = null;try {if(!file.exists()) {return;}response.reset();//设置响应类型 PDF⽂件为"application/pdf",WORD⽂件为:"application/msword", EXCEL⽂件为:"application/vnd.ms-excel"。
微信小程序下载代码

微信小程序下载代码微信小程序是一种基于微信平台开发的应用程序,用户可以在微信中快速使用,无需下载安装即可使用。
作为开发者,我们可以通过微信开发者工具开发小程序,并发布到微信平台供用户下载和使用。
在本文中,我们将详细介绍如何下载小程序代码,并进行相应的开发工作。
1. 下载微信开发者工具首先,我们需要下载微信开发者工具,该工具是开发和调试微信小程序的必备工具。
我们可以在微信官方网站或应用商店中搜索“微信开发者工具”,然后下载并安装到我们的电脑或手机中。
2. 获取小程序代码接下来,我们需要获取小程序的代码。
如果是我们自己开发的小程序,可以直接在微信开发者工具中打开项目,并对代码进行编辑和调试。
如果是他人或团队共享的小程序代码,我们需要获取对应的代码仓库链接或压缩文件,并导入到微信开发者工具中。
3. 编辑和调试代码在微信开发者工具中,我们可以编辑小程序的代码、页面和样式,同时还可以模拟不同的手机型号和微信版本,以便进行调试和优化。
在编辑和调试过程中,可以实时预览小程序的效果,并查看控制台输出的调试信息。
4. 上传和发布小程序当我们完成代码的编辑和调试后,可以将小程序上传到微信开发者工具中的“上传”功能。
在上传过程中,我们需要填写小程序的基本信息、版本号和描述等内容,然后选择提交审核或直接发布。
经过微信平台的审核后,小程序将会正式发布并供用户下载和使用。
5. 相关资源和学习资料除了微信开发者工具外,还有许多关于微信小程序开发的学习资源和文档可供参考,包括官方文档、示例代码和社区论坛等。
通过不断学习和实践,我们可以更好地掌握微信小程序开发的技能,为用户提供更优质的小程序体验。
结语通过本文的介绍,我们了解了如何下载微信小程序的代码,并进行相应的开发工作。
微信小程序作为一种便捷且强大的移动应用平台,为开发者和用户带来了全新的体验。
希望本文对您有所帮助,欢迎继续关注和学习微信小程序开发的相关内容。
Java实现批量下载功能(通过压缩zip包下载)

JAVA 批量文件压缩为zip包下载需要用到ant.jar包Jar包下载地址:/*** 点击批量下载触发的方法* @return*/@SuppressWarnings("unchecked")public String moredownload(){@SuppressWarnings("unused")List list1 = checktb;System.out.println();//==========================多文件压缩成zip包下载测试========================================//生成的ZIP文件名为Demo.zipString tmpFileName = "Demo.zip";String FilePath = "D:\\";byte[] buffer = new byte[1024];String strZipPath = FilePath + tmpFileName;try {ZipOutputStream out = new ZipOutputStream(new FileOutputStream( strZipPath));// 需要同时下载的两个文件result.txt ,source.txtFile[] file1 = { new File(FilePath+"1.txt"),new File(FilePath+"2测试文档.doc") };for (int i = 0; i < file1.length; i++) {FileInputStream fis = new FileInputStream(file1[i]);out.putNextEntry(new ZipEntry(file1[i].getName()));//设置压缩文件内的字符编码,不然会变成乱码out.setEncoding("GBK");int len;// 读入需要下载的文件的内容,打包到zip文件while ((len = fis.read(buffer)) > 0) {out.write(buffer, 0, len);}out.closeEntry();fis.close();}out.close();this.downFile(getResponse(), tmpFileName);} catch (Exception e) {System.out.println("压缩时出错了!");}//=============================================================== ===========================// return "mdlsuccess";return null;}/*** 获取Response* @return*/private HttpServletResponse getResponse() {return ServletActionContext.getResponse();}/*** 文件下载* @param response* @param str*/private void downFile(HttpServletResponse response, String str) { try {String FilePath = "D:\\";String path = FilePath + str;File file = new File(path);if (file.exists()) {InputStream ins = new FileInputStream(path);BufferedInputStream bins = new BufferedInputStream(ins);//放到缓冲流里面OutputStream outs = response.getOutputStream();// 获取文件输出IO流BufferedOutputStream bouts = newBufferedOutputStream(outs);response.setContentType("application/x-download");// 设置response内容的类型response.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(str, "UTF-8"));// 设置头部信息int bytesRead = 0;byte[] buffer = new byte[8192];// 开始向网络传输文件流while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) { bouts.write(buffer, 0, bytesRead);}bouts.flush();// 这里一定要调用flush()方法ins.close();bins.close();outs.close();bouts.close();} else {//response.sendRedirect("../error.jsp");}} catch (IOException e) {System.out.println("下载出错了!");}}//=========================以上是多文件下载===============================================本人亲自测试过,可用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其中,ui包:
MainWin.java
package下载.ui;
public class MainWin {
public static void main(String[] args) {
DownloadWin win = new DownloadWin("下载");
}
* <p>文件保存目录
*/
private void downFile(String httpAddress, String fileDir) {
SplitString httpSplit = new SplitString();
fileName = httpSplit.split(httpAddress,"/");//根据“/”分解
private InputStream itStream;
private DataInputStream in;
private FileOutputStream otStream;
private DataOutputStream out;
public DownloadListener(JTextField httpLine, JTextField savePath,
Box boxV2 = Box.createHorizontalBox();
Box boxV3 = Box.createHorizontalBox();
Box boxV4 = Box.createHorizontalBox();
Box boxV5 = Box.createHorizontalBox();
*
* @param accordingString
* @return返回“/”之后最后一个字符串
*/
public String split(String splitString,String accordingString) {
//httpAddress.endsWith("/");
//如果a/c/则返回的字符串是c
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import .URL;
import .URLConnection;
lineLabel = new JLabel("访问地址:");
httpLine = new JTextField();
saveLabel = new JLabel("保存路径:");
savePath = new JTextField();
btnDownload = new JButton("下载");
infoLabel = new JLabel();
/**
*监听器
*/
DownloadListener listener = new DownloadListener(httpLine,savePath,infoLabel);//将需要改变显示状态的控件传递过去处理
btnDownload.addActionListener(listener);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private void init() {
Box baseBox = Box.createVerticalBox();
Box boxV1 = Box.createHorizontalBox();
}
DownloadWin.java
package下载.ui;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
package下载.listener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
private JTextField httpLine;
private JTextField savePath;
private JButton btnDownload;
private JLabel lineLabel;
private JLabel saveLabel;
private static JLabel infoLabel;
while((n=itStream.read(b))!=-1){
otStream.flush();
otStream.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
//otStream.flush();//刷新此输出流并强制写出所有缓冲的输出字节
//String[] str = httpAddress.split("/");
//"unhappy".substring(2) returns "happy"
//"a.s.k"stIndexOf(".") returns 3
//splitstr = str[str.length-1];//获取“/”之后最后一个字符串
import javax.swing.JLabel;
import javax.swing.JTextField;
import下载.listener.DownloadListener;
public class DownloadWin extends JFrame{
/**
*
*/
private static final long serialVersionUID = -7226361346020458023L;
baseBox.add(boxV2);
Box.createVerticalStrut(15);
baseBox.add(boxV3);
Box.createVerticalStrut(15);
baseBox.add(boxV4);
Box.createVerticalStrut(15);
baseBox.add(boxV5);
public DownloadWin(String title) {
init();
setTitle(title);
setSize(400,300);
setLayout(new GridLayout(2, 1, 0, 0));//为美观考虑,第二行没有使用。
setLocationRelativeTo(null);
System.out.println(fileName);
if(""==fileName||null==fileName||""==fileDir||null==fileDir){
System.out.println("网络地址或保存路径不正确");
infoLabel.setText("网络地址或保存路径不正确");
//in.close();
itStream.close();
import javax.swing.JLabel;
import javax.swing.JTextField;
import下载.util.SplitString;
public class DownloadListener implements ActionListener {
private JTextField httpLine, savePath;
//获取链接指向的文件的相关数据
itStream = conn.getInputStream();
//in = new DataInputStream(itStream);//数据输入流
otStream = new FileOutputStream(file);//根据文件创建输出流
//out = new DataOutputStream(otStream);//数据输出流
首先,这只是一个很简单的程序,所以大神请绕道。
心血来潮,用java编写了一个能访问http链接,并能下载文件的窗体小程序。实测能够正确下载17M的压缩包,图片,文档,html等。但是因为程序效率低下,于是没有继续测试更大的压缩文件(问题可能在于保存输入流到缓冲区的数组)。
程序已打包jar可执行文件,并将代码一齐打包到jar中。为方便使用jar,使用word文档对象包装了它,将下面的对象(显示为一个图标)拖到桌面或者其他文件夹,即可得到该程序:
}
else{
System.out.println("下载中...");
infoLabel.setText("下载中...");
try {
url = new URL(httpAddress);//设置链接
conn = url.openConnection();//打开链接
file = new File(fileDir,fileName);