如何调用使用的Apache的HttpClient从Java Swing的登录页面的Servlet? [英] How to call the Servlet from Java Swing login page using HttpClient in apache?
问题描述
我有Swing的登录页面中包含用户名和密码,一个提交按钮。
I am having the Swing login page contains userName and password and a submit button .
我需要传递给LoginAction中的servlet的用户名和密码,我需要通过servlet来获取用户名和密码在控制台中...
I need to pass the username and password to the LoginAction servlet and I need to get userName and password in the Console through servlet...
我的挥杆code是,
package com.tps.SwingChat.login;
import javax.swing.*;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
class Login extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JButton SUBMIT;
JPanel panel;
JLabel label1,label2;
final JTextField text1,text2;
Login()
{
label1 = new JLabel();
label1.setText("Username:");
text1 = new JTextField(15);
label2 = new JLabel();
label2.setText("Password:");
text2 = new JPasswordField(15);
SUBMIT=new JButton("SUBMIT");
panel=new JPanel(new GridLayout(3,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(SUBMIT);
add(panel,BorderLayout.CENTER);
SUBMIT.addActionListener(this);
setTitle("LOGIN FORM");
}
public void actionPerformed(ActionEvent ae)
{
String uname=text1.getText();
String pwd=text2.getText();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost:8089/SwingChat/LoginAction?uname="+uname+"&pwd="+pwd);
try {
HttpResponse rsp = client.execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class LoginDemo
{
public static void main(String arg[])
{
try
{
Login frame=new Login();
frame.setSize(300,100);
frame.setVisible(true);
}
catch(Exception e)
{JOptionPane.showMessageDialog(null, e.getMessage());}
}
}
和我的Servlet是,
And my Servlet is,
public class LoginAction extends HttpServlet {
private static final long serialVersionUID = 1L;
String uname = null;
String pwd = null;
public LoginAction() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
uname = request.getParameter("uname");
pwd = request.getParameter("pwd");
System.out.println("UserName : "+uname);
System.out.println("Password : "+pwd);
}
}
请任何帮助我找到了解决方案。
Please any help me to find the solution.
如果我提交摆动页面没有什么happend.I所需要的用户名和密码控制台到e ..
If I submit the swing page nothing is happend.I need the userName and password to e in console..
在此先感谢...
推荐答案
更新您的code将数据传递给servlet和从服务器读取响应数据。
Updated your code to pass data to servlet and read response data from server.
public void actionPerformed(ActionEvent ae) {
String uname = text1.getText();
String pwd = text2.getText();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(
"http://localhost:8089/SwingChat/LoginAction?uname=" + uname
+ "&pwd=" + pwd);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("uname", uname));
nameValuePairs.add(new BasicNameValuePair("pwd", pwd));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// executing the POST request
HttpResponse rsp = client.execute(post);
// reading response data
HttpEntity entity = rsp.getEntity();
InputStream inputStream = entity.getContent();
String response = convertStreamToString(inputStream);
System.out.println("Response from server : " + response);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
请查看
这篇关于如何调用使用的Apache的HttpClient从Java Swing的登录页面的Servlet?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!