请教java程序设计问题

当前位置: >
> Java程序间通信问题请教下两个程序间的通信问题我有两个Web程序运行在同一个Tomcat下现在我
Java程序间通信问题请教下两个程序间的通信问题我有两个Web程序运行在同一个Tomcat下现在我
jozqaz & at
Java程序间通信问题请教下两个程序间的通信问题
我有两个Web程序&运行在同一个&Tomcat&下
现在我需要的是
当在A程序下登陆成功&将User对象(登陆后的用户对象)&传递给B程序&
B程序就可以正常浏览
当A注销后&此登陆对象被销毁&同时B程序会提示用户已注销
有什么简单的方法吗&或者思路吗&谢谢啦!
简单的方法,参考下吧。
jp7966618 & &
& & (0)(0)楼上的例子可以参考一下,session共享,这方面的例子比较多
JPC10011 & &
& & (0)(0)把登录对象放到ServletContext对象里面,两个web程序就可以共用这个对象jpacm & &
& & (0)(0)简单的方法,就是Session共享。
不然只能Socket通信,或者,HTTP页面调用。JPC10011 & &
& & (0)(0)用socket又简单又省事JPC10011 & &
& & (0)(0)引用:  简单的方法,就是Session共享。
不然只能Socket通信,或者,HTTP页面调用。
+1jpacm & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-File file = new File(path);
if (!file.exists() || file.isDirectory())
throw new FileNotFoundException();
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(file));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte[] temp = new byte[1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
in.close();
String encod_char = findCharSet(out.toString());
return out.toString(encod_char);
} catch (IOException ie) {
ie.printStackTrace();
这个是我写的一个读取文件的方法,不知道还有没有更高效的算法。还请大家赐教。。。。执行效率大约在30-50MS之间。
问题补充:因为我这个需求要用到网页编码格式的转换问题,如果用InputStreamReader,那怎么解决编码不同的html呢?每个网站的网页编码都不一样的.......不知道你有什么高招,还请赐教。。。。。。JavaHero080 写道InputStreamReader
采纳的答案
我想说的是InputStreamReader是可以指定编码方式的
不明白你的意思。你现在做的是
1. 读入InputSteam到一个byteArray
2. 将此byteArray用指定编码变成String
而InputStream则是直接用内置的方法读入InputStream成String
注意,InputStream是可以指定编码方式的。
InputStreamReader
已解决问题
未解决问题当前位置: >
> java算法题求请教大概题目:用程序随机生成150个数0到9范围内的随机数组,然后计算出数组里两个
java算法题求请教大概题目:用程序随机生成150个数0到9范围内的随机数组,然后计算出数组里两个
heipi98 & at
java算法题 求请教大概题目:用程序随机生成150个数0到9范围内的随机数组,然后计算出数组里两个相同值的最大距离,如数组:int [] num ={2,4,2,7,6,9,2,6,8};
2的最大5, 6的最大距离2 要求输出对应的值和距离。
for example  Java code  int count = 150;
int[] num = new int[count];
for (int i=0; i& i++) { //生成随机数
num[i] = (int)(Math.random()*10);
Map&Integer, Integer& map = new LinkedHashMap&Integer, Integer&();
for (int i=0, j=0; i& i++) { //寻找最大距离
if (! map.containsKey(num[i])) {
for (j=count-1; j&=i; j--) {
if (num[j] == num[i]) {
map.put(num[i], j-i-1);
if (j&i) map.put(num[i], 0);
for (Map.Entry&Integer, Integer& e : map.entrySet()) { //打印结果
System.out.printf(&%s的最大距离%s\n&, e.getKey(), e.getValue());
heiseyoumo & &
& & (0)(0)  Java code  import java.util.A
import java.util.HashM
import java.util.M
public class Test{
public static void test(int count,int randomNum){
int[] data = new int[count];
for (int i=0; i& i++) { //生成随机数
data[i] = (int)(Math.random()*randomNum);
System.out.println(Arrays.toString(data));
Map&Integer,Integer[]& map = new HashMap&Integer,Integer[]&();
for(int i=0;i&i++){
int key = data[i];
if(map.containsKey(data[i])){
Integer[] temp =map.get(key);
temp[1] = i-temp[0];
map.put(key,temp);
map.put(key,new Integer[]{i,0});
for (Map.Entry&Integer, Integer[]& e : map.entrySet()) { //打印结果
System.out.printf(&%s的最大距离%s\n&, e.getKey(), e.getValue()[1]);
public static void main(String[] args) {
test(10,5);
test(150,10);
heiseliuyue & &
& & (0)(0)用两个伴随数组遍历一次就行了  Java code  import java.util.A
import java.util.R
public class Test2 {
static final int COUNT = 15;
static int[] mArr = new int[COUNT];
public static void main(String[] args) {
//产生随机数
Random random = new Random();
for(int i = 0;i & COUNT;i++)
mArr[i] = random.nextInt(10);
//获取最大距离
int[] pos = new int[10];
for(int i = 0;i & pos.i++){
pos[i] = -1;
int[] dis = new int[10];
for(int i = 0;i & COUNT;i++){
if(pos[mArr[i]] != -1)
dis[mArr[i]] += (i - pos[mArr[i]] - 1);
pos[mArr[i]] =
//System.out.println(Arrays.toString(mArr));
for(int i = 0;i & dis.i++){
if(dis[i] != 0)
System.out.println(i + & 最长距离:& + dis[i]);
heiseliuyue & &
& & (0)(0)生成随机数的楼上几位都写的,这里我就不写了直接遍历  Java code  /**
* 遍历一次获得最大距离
* @param num
* @param data
public static int test3(int[] num,int data){
int count=0;
int count2=0;
//当遍历到相同的数值是计数加1
int count3=0;
//最大长度
boolean flag=
//是否首次匹配
for(int i=0;i&num.i++){
if(data==num[i]){
//如果匹配成功
//设置为非首次
if(!flag){
if(data!=num[i]){
count3+=count2-1;
System.out.println(&count3:&+count3);
public static void main(String[] args) throws Exception {
int [] num ={2,4,2,7,6,9,2,6,8};
test3(num,2);
}heiseliuyue & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-请教个java问题:_百度知道
请教个java问题:
swing.game。问一下这第一行有什么作用;import javax.JFrame,但有第一句的话,却运行不了;public class Test{public static void main(String[] args){JFrame jf=new JFrame();jf.setVisible(true);}}这个程序在dos里去掉第一行可以编译运行package org.liky
提问者采纳
liky&#47,应该是在org&#47第一行是说你的程序的路径;game&#47
那有第一行的时候应该怎么运行呢?
你把源码放在这个路径就可以了
这个路径怎么找?
这个路径是你自己创建的亲~~或者你可以把第一句去掉
提问者评价
明白了,感谢大侠!
其他类似问题
为您推荐:
其他3条回答
liky,如果有第一行第一行是包名.game,运行时需要指定main函数的路径为 org
问题呢,没看到呀
第一个是包名,话说ide真这么不受人待见吗?
您可能关注的推广
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看:1310|回复:2
beep()和io输出\7 貌似在好多机器上无效,我现在用的笔记本就无效
除了播放一段剪辑好的音频还有其他好的解决办法吗……请教大虾啊。
而且我感觉java里写一段播放音频的代码肿么那么麻烦呢,,,(好吧,其实我这块没仔细看)
复制内容到剪贴板代码:import java.awt.BorderL
import java.awt.CheckboxMenuI
import java.awt.C
import java.awt.C
import java.awt.FileD
import java.awt.F
import java.awt.FontM
import java.awt.G
import java.awt.M
import java.awt.MenuB
import java.awt.MenuI
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.event.ItemE
import java.awt.event.ItemL
import java.awt.event.WindowA
import java.awt.event.WindowE
import javax.media.ControllerClosedE
import javax.media.ControllerE
import javax.media.ControllerL
import javax.media.EndOfMediaE
import javax.media.GainC
import javax.media.M
import javax.media.MediaL
import javax.media.NoPlayerE
import javax.media.P
import javax.media.PrefetchCompleteE
import javax.media.RealizeCompleteE
import javax.media.T
import javax.swing.JF
class MediaPlayer extends JFrame implements ActionListener, ControllerListener, ItemListener
& && &&&//MediaPlayer类的变量成员的声明;
& && &&&//JMF提供的播放器对象;
& && &&&static P
& && &&&Component vc, cc,&&
& && &&&GainC
& && &&&//first值用来控制在刚开始程序时显示一幅欢迎界面;loop用以标记是否循环播放;
& && &&&boolean first = true, loop =
& && &&&//设立一个字符串记录当前打开文件的路径
& && &&&String currentD
& && &&&MediaPlayer(String title)
& && && && &super(title);
& && && && &// 利用一个adapter实现对用户点击窗口系统菜单的关闭按钮
& && && && &// 时的响应;
& && && && &addWindowListener(new WindowAdapter()
& && && && &{
& && && && && & public void windowClosing(WindowEvent e)
& && && && && & {
& && && && && && &&&//调用dispose以执行windowClosed
& && && && && && &&&//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
& && && && && && &&&dispose();
& && && && && & }
& && && && && & public void windowClosed(WindowEvent e)
& && && && && & {
& && && && && && &&&if (player != null)
& && && && && && && && && & player.close();
& && && && && && &&&System.exit(0);
& && && && && & }
& && && && &});
& && && && &//调用设置程序菜单栏的方法成员完成菜单的布置
& && && && &setupMenu();
& && && && &setSize(350, 300);
& && && && &setVisible(true);
& && &&&//本方法用以设置程序菜单栏
& && &&&public void setupMenu()
& && && && &//设置一个菜单
& && && && &Menu f = new Menu(&文件&);
& && && && &//往设置的菜单种添加菜单项
& && && && &MenuItem mi = new MenuItem(&打开&);
& && && && &mi.addActionListener(this);
& && && && &f.add(mi);
& && && && &f.addSeparator();
& && && && &CheckboxMenuItem cbmi = new CheckboxMenuItem(&循环&, false);
& && && && &cbmi.addItemListener(this);
& && && && &f.add(cbmi);
& && && && &f.addSeparator();
& && && && &mi = new MenuItem(&退出&);
& && && && &mi.addActionListener(this);
& && && && &f.add(mi);
& && && && &Menu l = new Menu(&播放列表&);
& && && && &Menu c = new Menu(&播放控制&);
& && && && &MenuItem move = new MenuItem(&播放&);
& && && && &move.addActionListener(this);
& && && && &c.add(move);
& && && && &c.addSeparator();
& && && && &MenuItem pause = new MenuItem(&暂停&);
& && && && &pause.addActionListener(this);
& && && && &c.add(pause);
& && && && &c.addSeparator();
& && && && &MenuItem stop = new MenuItem(&停止&);
& && && && &stop.addActionListener(this);
& && && && &c.add(stop);
& && && && &c.addSeparator();
& && && && &Menu a = new Menu(&关于作者&);
& && && && &MenuItem about = new MenuItem(&该死的温柔&);
& && && && &about.addActionListener(this);
& && && && &a.add(about);
& && && && &//设置一个菜单栏
& && && && &MenuBar mb = new MenuBar();
& && && && &//将设置的菜单依次加入程序的菜单栏中去
& && && && &mb.add(f);
& && && && &mb.add(c);
& && && && &mb.add(l);
& && && && &mb.add(a);
& && && && &//将构造完成的菜单栏交给当前程序的窗口;
& && && && &setMenuBar(mb);
& && &&&}&&
//事件响应成员;捕捉发送到本对象的各种事件;
& && &&&public void actionPerformed(ActionEvent e)
& && && && &//设一个字符串用于暂存打开的媒体文件的路径;
& && && && &String cufile ,
& && && && &if (e.getActionCommand().equals(&退出&))
& && && && &{
& && && && && && &&&// 调用dispose以便执行windowClosed
& && && && && && &&&//dispose();
& && && && && && &&&this.setVisible(false);
& && && && && && &&&
& && && && &}
& && && && &//次事件表明用户选择了&播放&菜单命令;
& && && && &//如果当前有一个文件可以播放则执行播放命令;
& && && && &if (e.getActionCommand().equals(&播放&))
& && && && &{
& && && && && && &&&if (player != null)
& && && && && && &&&{
& && && && && && && && && & player.start();
& && && && && && &&&}
& && && && && && &&&
& && && && &}
& && && && &//如果当前正在播放某一文件,则执行暂停;
& && && && &if (e.getActionCommand().equals(&暂停&))
& && && && &{
& && && && && && &&&if (player != null)
& && && && && && &&&{
& && && && && && && && && & player.stop();
& && && && && && &&&}
& && && && && && &&&
& && && && &}
& && && && &if (e.getActionCommand().equals(&关于作者&))
& && && && &{
& && && && && && &&&// 调用dispose以便执行windowClosed
& && && && && && && & //System.out.println(&该死的温柔&);
& && && && && && &&&
& && && && && && &&&
& && && && &}
& && && && &//次事件表明用户选择了&播放&菜单命令;
& && && && &//如果当前有一个文件可以播放则执行播放命令;
& && && && &if (e.getActionCommand().equals(&停止&))
& && && && &{
& && && && && && &&&if (player != null)
& && && && && && &&&{
& && && && && && && && && & player.stop();
& && && && && && && && && & player.setMediaTime(new Time(0));
& && && && && && &&&}
& && && && && && &&&
& && && && &}
//用户选择要播放的媒体文件
& && && && &if (e.getActionCommand().equals(&打开&))
& && && && &{
& && && && && && &&&FileDialog fd = new FileDialog(this, &打开媒体文件&, FileDialog.LOAD);
& && && && && && &&&fd.setDirectory(currentDirectory);
& && && && && && &&&fd.show();
& && && && && && &&&// 如果用户放弃选择文件,则返回
& && && && && && &&&if (fd.getFile() == null)
& && && && && && && && && &
& && && && && && &&&//保存了所选文件的名称及其全路径名称已被稍后使用
& && && && && && &&&//同时设置当前文件夹路径
& && && && && && &&&selcectfile = fd.getFile();
& && && && && && &&&currentDirectory = fd.getDirectory();
& && && && && && &&&cufile = currentDirectory +
& && && && && && &&&//将用户选择的文件作为一个菜单项加入播放列表该菜单项&名为&该文件名;
& && && && && && &&&//被点击后给出的命令串是该文件的全路径名
& && && && && && &&&MenuItem mi = new MenuItem(selcectfile);
& && && && && && &&&mi.setActionCommand(cufile);
& && && && && && &&&MenuBar mb = getMenuBar();
& && && && && && &&&Menu m = mb.getMenu(2);
& && && && && && &&&mi.addActionListener(this);
& && && && && && &&&m.add(mi);
& && && && &}
& && && && &else
& && && && &{
& && && && && && &&&//程序逻辑运行到此表示用户选择了一个&播放列表&中的媒体文件
& && && && && && &&&//此时可以通过如下动作获得该文件的全路径名;
& && && && && && &&&cufile = e.getActionCommand();
& && && && && && &&&selcectfile =
& && && && &}
& && && && &//如果已存在一个播放器,则先将其关闭,稍后重新创建
& && && && &//创建播放器时需要捕捉一些异常;
& && && && &if (player != null)
& && && && && && &&&player.close();
& && && && &try
& && && && &{
& && && && && && &&&player = Manager.createPlayer(new MediaLocator(&file:& + cufile));
& && && && &}
& && && && &catch (java.io.IOException e2)
& && && && &{
& && && && && && &&&System.out.println(e2);
& && && && && && &&&
& && && && &}
& && && && &catch (NoPlayerException e2)
& && && && &{
& && && && && && &&&System.out.println(&不能找到播放器.&);
& && && && && && &&&
& && && && &}
& && && && &if (player == null)
& && && && &{
& && && && && && &&&System.out.println(&无法创建播放器.&);
& && && && && && &&&
& && && && &}
& && && && &first =
& && && && &setTitle(selcectfile);
& && && && &//设置处理播放控制器实际的对象;
& && && && &player.addControllerListener(this);
& && && && &player.prefetch();
//因为实现了&ControllerListener&接口,本方法用于处理媒体播放器传来的事件;
& && &&&public void controllerUpdate(ControllerEvent e)
& && && && &Container tainer = getContentPane();
& && && && &// 调用player.close()时ControllerClosedEvent事件出现。
& && && && &// 如果存在视觉部件,则该部件应该拆除(为一致起见,
& && && && &// 我们对控制面板部件也执行同样的操作下一次需要时再构造)
& && && && &if (e instanceof ControllerClosedEvent)
& && && && &{
& && && && && & if (vc != null)
& && && && && & {
& && && && && && &&&remove(vc);
& && && && && && &&&vc =
& && && && && & }
& && && && && & if (cc != null)
& && && && && & {
& && && && && && &&&remove(cc);
& && && && && && &&&cc =
& && && && && & }
& && && && && &
& && && && &}
& && && && &//在播放结束时,将播放指针置为文件之首,如果设定了循环播放,则再次启动播放器;
& && && && &if (e instanceof EndOfMediaEvent)
& && && && &{
& && && && && & player.setMediaTime(new Time(0));
& && && && && & if (loop)
& && && && && & {
& && && && && && &&&player.start();
& && && && && & }
& && && && && &
& && && && &}
& && && && &//PrefetchCompleteEvent事件发生后调用start,正式启动播放
& && && && &if (e instanceof PrefetchCompleteEvent)
& && && && &{
& && && && && & player.start();
& && && && && &
& && && && &}
& && && && &//本事件表示由于用于播放的资源已经确定;此时要将媒体的图形conmopnent
& && && && &//(如果有)显示出来,同时将播放器player的控制器显示到窗口里;
& && && && &if (e instanceof RealizeCompleteEvent)
& && && && &{
& && && && && & //如果媒体中有图像,将对应图像component载入窗体;
& && && && && & vc = player.getVisualComponent();
& && && && && & if (vc != null)
& && && && && && && && &tainer.add(vc, BorderLayout.CENTER);
& && && && && & //将对应控制器component载入窗体;
& && && && && & cc = player.getControlPanelComponent();
& && && && && & cc.setBackground(Color.BLUE);
& && && && && & if (cc != null)
& && && && && && && && &tainer.add(cc, BorderLayout.SOUTH);
& && && && && & //有一些特殊媒体在播放时提供另外的控制手段,将该控制器一并加入窗口;
& && && && && & gc = player.getGainControl();
& && && && && & gcc = gc.getControlComponent();
& && && && && & if (gcc != null)
& && && && && && &&&tainer.add(gcc, BorderLayout.NORTH);
& && && && && & //根据媒体文件中是否有图像,设定相应的窗口大小
& && && && && & if (vc != null)
& && && && && & {
& && && && && && &&&pack();
& && && && && && &&&
& && && && && & }
& && && && && & else
& && && && && & {
& && && && && && &&&setSize(300, 75);
& && && && && && &&&setVisible(true);
& && && && && && &&&
& && && && && & }
& && && && &}
& && &&&//菜单状态改变事件的响应函数;
& && &&&public void itemStateChanged(ItemEvent e)
& && && && &loop = !
& && &&&//不执行背景清除操作,以免控制面板部件闪烁
& && &&&//同时使得本程序在用鼠标拖动窗口时存在一些没有及时重绘的情况,有待改进
& && &&&public void update(Graphics g)
& && && && &paint(g);
& && &&&/*
& && && &* 如果只是要退出程序或者关闭窗口的话,JFrame 有一个更方便的方法:
& && && &* JFrame.setDefaultCloseOperation(int operation),参数的值可能是:
& && && &* DO_NOTHING_ON_CLOSE
& && && &* HIDE_ON_CLOSE
& && && &* DISPOSE_ON_CLOSE
& && && &* EXIT_ON_CLOSE
& && && &*
& && && &* 这里可以这样改:
& && && &* this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
& && && &*/&&
//本类的main函数,其中构造了本类的一个实例;
& && &&&public static void main(String[] args)
& && && && &MediaPlayer mediaPlayer = new MediaPlayer(&简单媒体播放器&);
& && && && &//mediaPlayer.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
& && && && &if (player != null)
& && && && &{
& && && && && & System.out.println(&已经有一个相同的程序在运行&);
& && && && && &
& && && && &}
& && &&&public void paint(Graphics g)
& && && && &// 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器
& && && && &// 和部件(包括控制面板部件)的paint()方法。
& && && && &super.paint(g);
& && && && &//以下代码实现了在开启程序之初显示欢迎界面
& && && && &if (first)
& && && && &{
& && && && &&&
& && && && && & int w = getSize().
& && && && && & int h = getSize().
& && && && && & g.setColor(Color.green);
& && && && && & g.fillRect(0, 0, w, h);
& && && && && & Font f = new Font(&DialogInput&, Font.CENTER_BASELINE, 20);
& && && && && & g.setFont(f);
& && && && && & FontMetrics fm = g.getFontMetrics();
& && && && && & int swidth = fm.stringWidth(&欢迎使用播放器&);
& && && && && & g.setColor(Color.black);
& && && && && & g.drawString(& 欢迎您简单媒体播放器 &,(w - swidth) / 3,(h + getInsets().top) / 2);
& && && && &
& && && && &}
引用:原帖由 梦朝思夕 于
15:43 发表
import java.awt.BorderL
import java.awt.CheckboxMenuI
import java.awt.C
import java.awt.C
import java.awt.FileD
import java.awt.F
import ja ... 好吧……好长……3Q}

我要回帖

更多关于 java程序设计 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信