介绍
随着PC机的诞生与应用,计算模式从集中式(数据和应用程序在一台主机上)转向了分布式(数据和应用程序跨越多个节点机),尤为典型的是C/S结构(Client/Server的简称,客户机/服务器模式)。两层结构C/S模式,在上个世纪八十年代及九十年代初得到了大量应用,最直接的原因是可视化开发工具的推广。之后,它开始向三层结构发展。近来,随着网络技术不断发展,尤其是基于Web的信息发布和检索技术、Java计算技术以及网络分布式对象技术的飞速发展,导致了很多应用系统的体系结构从C/S结构向更加灵活的多级分 布结构演变,使得软件系统的网络体系结构跨入一个新阶段,即B/S体系结构(Browser/Server的简称,浏览器/服务器模式)。基于Web的B/S方式其实也是一种客户机/服务器方式,只不过它的客户端是浏览器。为了区别于传统的C/S模式,才特意将其称为B/S(浏览器/服务器)模式。
结合今天知识点
Client
以下几个方法,相当于客户端,在做界面时用到了类 JFrame了解请点击!
界面的文本输入,按钮等都可以在这里面实现。
1、doGet
直接连接在url后面是显示的
GET 调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。 GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,表单里的用户名和密码需要发送到服务器端, 若使用Get调用,就会在浏览器的URL中显示用户名和密码。
测试方法代码:
public class DoGet extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DoGet frame = new DoGet();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DoGet() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 350, 320);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnDoget = new JButton("doGet方法测试");
btnDoget.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String urlString = "http://localhost:8080/MyServiceTest/MyTest?username=李三&password=11114";
//直接跟在url后是doGet方法
try {
URL url = new URL(urlString);//生成URL
URLConnection connect = url.openConnection();//打开url连接
HttpURLConnection httpConnection = (HttpURLConnection) connect;//HttpUrlConnection 是sun封装成的网络连接
httpConnection.setRequestMethod("GET");//设置请求方法
httpConnection.setConnectTimeout(3000);//设置连接超时的时间
httpConnection.setReadTimeout(3000);//读取时间超时
// 设置编码方式,接受的数据类型
httpConnection.setRequestProperty("Accept-Charset", "utf-8");//使用utf-8编码格式将字节数组转化成字符串
// 设置可以接受序列化的java对象
httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
int code = httpConnection.getResponseCode();//得到状态码
System.out.println(code);
if(code==HttpURLConnection.HTTP_OK){
//网络连接状态成功,那么下面读数据
InputStream is = httpConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = br.readLine();
while(line!=null){
System.out.println(line);
line = br.readLine();
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SocketTimeoutException e) {