Web:
Web分为:静态的网页;(如:html,数据不会进行刷新或改变)
和动态的网页。(会刷新数据,在出现ajax技术后使用我们的刷新更加灵活,称为局部刷新)(如:jsp=html+java代码,jquert主要是做动画和特效)
C/S架构 :客户端直接与服务器进行通信,我们的客户端需要下载一个C/S软件(比如:QQ客户端)。
弊端:对客户端要求严格,必须下载客户端软件才能通信;不便于后期维护。
优点:没有中间端,传输效率高
client/server 客户端/服务器
B/S系统架构 :就是多了一个中转站,也就是提供一个url进行访问,通过用户的访问不同的url,在服务器拿不同的数据,所有通信的都要经过中转站。
弊端:效率低。
优点:便于后期维护。
常用服务器:apache、 tomcat、 jboss、 weblogic、 websphere
Tomcat sun公司推出的,本身是java编写。 特点:免费、性能稳定、先进
Web项目 中webroot文件夹 代表web网站的根目录。放JSP、cs、gs等一些加载文件
所有web项目的访问,首先都是加载的web.xml文件。 xml记录配置信息,
区别:Html是做页面展示,xml是配置文件。
Tomcat中 bin 存放:脚本文件
Conf 配置文件
Lib jar包
Webapps web文件所在目录,也就是外部访问的web
Logs 日志文件
Temp 临时文件
Work 工作目录
打开conf文件夹,找到sever文件,里面有端口号。
Myeclipece中点开window 菜单,最下面的那个preferences找到webcat 加载tomcat。
然后在Myeclipece界面最下面sever中启动tomcat服务。
然后在浏览器中输入localhost:8080(端口号),就可以连上本地的服务器发布的web项目了。
怎么发布web项目?
右击web项目名,选择run as 然后选择第三个,就启动完成了。
怎么找到项目?
Tomcat 文件目录中webapps文件里都是已经发布的项目。
如何访问项目?
http://localhost:8080/webjsp
localhost(代表本机)
8080(代表Tomcat端口号)
webjsp(web项目名字)
http://localhost:8080/webjsp
是访问到整个项目,在web项目的webroot目录下的web.xml里有一个默认的访问路径(welcome file),访问整个项目时,优先访问的就是那个路径。
如果要访问下一级的项目:
http://localhost:8080/webjsp/项目名
Socket编程:
Socket通信:即时通信(qq,微信) 长连接 特点:不容易被断开(只要你不断开连接,他都会一直连接)
开发理念基于tcp(传输慢,不丢数据,get)和udp(传输快,不稳定,容易丢数据,pose)协议,都是面向连接的协议。
即时通信:socket 协议与xmpp协议(四次握手)。
Socket通信,需要客户端,服务器端,而因为需要连接多个客户端,所以服务器端必须有多个线程。所以还要编写一个线程类。
比如:
clientlogin.java
clientlogin2.java
MyThread.java
severlogin.java
http协议
特点:1.简单 快捷(能够支持各种数据传输(文件,图片,文字))
2.无状态连接
3.一次性连接
4.支持c/s架构,b/s架构
Post 提交,对提交的数据进行加密,拼接的参数在url上不会显示,没有数据限制,安全性比较高,一般都用post;
Get 提交,拼接的参数在url上显示,安全性比较低,适合用在下载 (没有进行加密,传输快)
http请求 : 能直接设置请求头header 灵活设置编码格式,大部分网站都会使用http请求
https请求:https = http+ssl证书,这个证书保证了请求的安全性,这个证书是需要买的。
socket 客户端、服务器、线程类代码如下:
客户端:
package socket123;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class kehuduansocket1 {
public static void main(String[] args) {
try {
Socket socket = new Socket(“localhost”, 9191);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
String str = "我是客户端1";
outputStream.write(str.getBytes());
socket.shutdownOutput();
BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream));
String line= null;
if((line=bufferedReader.readLine())!=null){
System.out.println(line);
}
outputStream.close();
inputStream.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器:
package socket123;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class fuwuqisocket {
public static void main(String[] args) {
try {
ServerSocket severSocket= new ServerSocket(9191);
while(true){
MyThread myThread= new MyThread(severSocket);
myThread.start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
线程:
package socket123;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyThread extends Thread{
private ServerSocket severSocket;
public MyThread(ServerSocket severSocket) {
this.severSocket = severSocket;
}
public void run() {
try {
Socket socket = severSocket.accept();
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream));
String str= null;
if((str=bufferedReader.readLine() )!= null){
System.out.println(str);
}
String line = "服务器收到信息了";
outputStream.write(line.getBytes());
outputStream.close();
inputStream.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}