在web中调用第三方程序.docx_第1页
在web中调用第三方程序.docx_第2页
在web中调用第三方程序.docx_第3页
在web中调用第三方程序.docx_第4页
在web中调用第三方程序.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在web中调用第三方c/s程序,通过传入用户名密码实现无需登录直接使用c/s程序由于正在开发的web项目需要用到第三方提供的c/s模式的系统,要求要有更好的用户体验,已经登录的用户不需要再去登录c/s系统,可以通过使用已经存在的用户信息直接调用c/s直接使用,这里写一个例子,仅供参考。1、 编写能接受传入参数的C/S模式的程序这里只写一个有登录功能的小程序来验证,具体代码如下:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import javax.swing.*;/* * 能接受传入参数的登录小程序,使用的是javaswing * author wang.hj 2012-8-7 * */class MyJPanel extends JPanel implements ActionListenerprivate int count=0;private JLabel label1,label2;private JTextField text;private JPasswordField pass;private JButton button1,button2;MyJPanel()label1=new JLabel(用户名);label2=new JLabel(密码);button1=new JButton(确定);button2=new JButton(取消);text=new JTextField(20);pass=new JPasswordField(20);button1.setMnemonic(KeyEvent.VK_O);/设置按钮快捷键button2.setMnemonic(KeyEvent.VK_C);button1.setActionCommand(entry);button2.setActionCommand(cancel);button1.addActionListener(this);/注册按钮事件button2.addActionListener(this);/注册按钮事件add(label1);add(text);add(label2);add(pass);add(button1);add(button2);public void actionPerformed(ActionEvent e)if (e.getActionCommand().equals(entry)count+; /计数String userName,password;/连续3次登录错误,系统自动退出if (count3) userName=text.getText();password=pass.getText();/登录成功,跳到新页面,失败的话清空输入框if (userName.equals(wang.hj)&password.equals(123)MyJPanel1 jp1=new MyJPanel1(userName);/定义面板 jp1.setBorder(BorderFactory.createTitledBorder(欢迎信息);/设定边界 JFrame frame=new JFrame(欢迎窗口); frame.setSize(300,150); frame.setContentPane(jp1);/在框架中加载面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件 frame.setVisible(true);elsetext.setText();pass.setText();elseSystem.exit(0);/退出程序else System.exit(0);/退出程序class MyJPanel1 extends JPanelprivate int count=0;private JLabel label1,label2;MyJPanel1(String userName)label1=new JLabel(userName+ ! 欢 迎 登 录 系 统 !);add(label1);public class LoginFrame extends JFrame public static void main(String args) /首先判断是否有传入参数,没有的话,直接显示登录界面if(args.length=0)MyJPanel jp=new MyJPanel();/定义面板jp.setBorder(BorderFactory.createTitledBorder(输入用户名和密码);/设定边界JFrame frame=new JFrame(用户登录);frame.setSize(300,150);frame.setContentPane(jp);/在框架中加载面板frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件frame.setVisible(true);else /有传入参数,并且参数不为空,进行相应的参数接收处理if(args0!=&args0!=null)String parameter = args0.toString().trim(); String splitChar = ; String paras = parameter.split(splitChar); if(paras.length!=2) JOptionPane.showMessageDialog(null, 传入参数有无,只能传入2个参数, 参数错误, JOptionPane.ERROR_MESSAGE); MyJPanel jp=new MyJPanel();/定义面板 jp.setBorder(BorderFactory.createTitledBorder(输入用户名和密码);/设定边界 JFrame frame=new JFrame(用户登录); frame.setSize(300,150); frame.setContentPane(jp);/在框架中加载面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件 frame.setVisible(true); else JOptionPane.showMessageDialog(null, paras0:+paras0+;paras1:+paras1, 提示信息, JOptionPane.INFORMATION_MESSAGE); String userName = null,password = null; int paras1 = paras0.lastIndexOf(/); int paras2 = paras1.indexOf(/);if(paras1!=-1)userName = paras0.substring(paras1+1);elseuserName = paras0;if(paras2!=-1)password = paras1.substring(0,paras2);elsepassword = paras1; if (userName.trim().equals(wang.hj)&password.trim().equals(123) MyJPanel1 jp1=new MyJPanel1(userName);/定义面板 jp1.setBorder(BorderFactory.createTitledBorder(欢迎信息);/设定边界 JFrame frame=new JFrame(欢迎窗口); frame.setSize(300,150); frame.setContentPane(jp1);/在框架中加载面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件 frame.setVisible(true);elseJOptionPane.showMessageDialog(null, 用户名或密码错误, 登录错误, JOptionPane.ERROR_MESSAGE);MyJPanel jp=new MyJPanel();/定义面板jp.setBorder(BorderFactory.createTitledBorder(输入用户名和密码);/设定边界JFrame frame=new JFrame(用户登录);frame.setSize(300,150);frame.setContentPane(jp);/在框架中加载面板frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件frame.setVisible(true); else JOptionPane.showMessageDialog(null, 传入参数为空, 参数错误, JOptionPane.ERROR_MESSAGE);MyJPanel jp=new MyJPanel();/定义面板jp.setBorder(BorderFactory.createTitledBorder(输入用户名和密码);/设定边界JFrame frame=new JFrame(用户登录);frame.setSize(300,150);frame.setContentPane(jp);/在框架中加载面板frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件frame.setVisible(true);(1) 无参数运行程序,弹出以下界面。(2) 输入用户名“wang.hj”、密码“123”;按确定登录;如下图:(3) 运行的时候传入参数“wang.hj;123”,直接得到登录后的页面,如下图。2、 把小程序做成可以双击运行的EXE文件这个网上有很多种工具,可以自行选择。我这里使用的是exe4j,打包后的程序如下图:这里我把应用程序放到D盘。3、 编写注册表文件这里是利用自定义URL Protocol来调用应用程序。浏览器在解析到自定义URL Protocol之后,会寻找注册表,然后通过注册表启动相应的程序,然后启动程序,传入参数。注册表文件如下:Windows Registry Editor Version 5.00HKEY_CLASSES_ROOTMyTestURL Protocol=D:MyTest.exe=MyTestProtocolHKEY_CLASSES_ROOTMyTestDefaultIcon=D:MyTest.exe,1HKEY_CLASSES_ROOTMyTestshellHKEY_CLASSES_ROOTMyTestshellopenHKEY_CLASSES_ROOTMyTestshellopencommand=D:MyTest.exe%1这里说明一下:第一行是注册表工具的版本信息,可以自己改一改,或者自己导入任意一个注册信息,把这一行复制过来就行了;第二行中的MyTest就是在HKEY_CLASSES_ROOT下面添加一个MyTest树,其中MyTest的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;第三行中的“D:MyTest.exe”是指定应用程序的路径,注意只能是exe的程序;第四行是协议的名称,可以是任意字符串,后面不会用到;第五行表示在MyTest中再加一个分支,照抄,不用管;第六行中的“D:MyTest.exe,1”也是对应的程序路径,后面的1照抄;第七行同第五行;第八行同第五行;第九行同第五行;第十行也是将路径换成自己的程序路径即可,其中%1表示到参数,参数可以在你的程序中解析得到(main方法中的args参数)。将上述内容复制到一个txt文档中,修改后缀名为.reg,双击该文件即可直接导入到注册表中。(这一点可以上网找资料,网上关于修

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论