⑴ 怎么用java创建一个web服务器
这个问题有点歧义,我分两种情况:
你想写一个web服务,需要一个web的服务容器,那么选用tomcat或者jetty都可以,网上有资料,很好弄。
你想用java写一个web容器。就跟tomcat一样; 那么只要你需要学习HTTP, java servlet等基础知识,按照这些标准去写就可以,可以看看tomcat的源码
⑵ java 如何配置web服务器
JavaWeb Tomcat服务器配置过程如下:
Tomcat服务器端口的配置
Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改
例如:将Tomcat服务器的启动端口由默认的8080改成8081端口
Tomcat服务器启动端口默认配置
1 <Connector port="8080" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443" />
将Tomcat服务器启动端口修改成8081端口
1 <Connector port="8081" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443" />
这样就把原来默认Tomcat默认的的8080端口改成了8081端口了,需要注意的是,一旦服务器中的*.xml文件改变了,则Tomcat服务器就必须重新启动,重新启动之后将重新读取新的配置信息。因为已经在server.xml文件中将Tomcat的启动端口修改成了8081,所以Tomcat服务器启动时就以8081端口启动了,如下图所示:
⑶ 基于java的web服务器是什么意思
基于java的web服务器是指用java语言写的web程序可以发布到该服务器上,通过启动该服务器就可以访问该web项目。任何一个网站都是建立在有服务器的基础上的。
目前常用的有tomcat,等
⑷ 如何搭建java web服务器
1.由于服务器配置比较低综合考虑,选择ubuntu系统进行搭建
并通过XFTP或上述的上传文件方法,上传至apache-tomcat-7.0.69/webapps中
⑸ 怎样用java编写一个WEB浏览器
一、HTTP协议的作用原理
WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:
(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:
GET 路径/文件名 HTTP/1.0
文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。
⑹ 如何用Java实现Web服务器
如何用Java实现Web服务器 一、HTTP协议的作用原理
WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:
(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:
GET 路径/文件名 HTTP/1.0
文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。
⑺ 我想用java写一个简单的web server,应该怎么写呀
我原来写过一个很简单的,可以指定你存放网页的文件夹,可以指定允许访问的IP,给你源码看看吧。public class WebServer {
static Button btReloadIP=new Button("更新合法IP列表");
static Button btAllow=new Button("允许此IP");
static Button btRepel=new Button("拒绝此IP");
static JTextField tfNewIP=new JTextField(20);
static JPanel pane=new JPanel();
static JTextField tfState=new JTextField(25);
static TextField tfURL=new TextField("G:\\webServer2\\",28);
static TextField tfPort=new TextField("10288",3);
static Button btStart=new Button("启动服务器");
static Button btStop=new Button("停止服务器");
private static int IPnum=0;
public static boolean IPadmin=false;
static boolean click=false;
private static String url;
private static String[] checkIP=new String[255];
private static Thread serverThread=null;
private static Socket connectionSocket=null;
private static ServerSocket listenSocket=null;
public WebServer() throws IOException{
serverThread=new Thread(new Runnable(){
public void run(){
try {
listenSocket = new ServerSocket(Integer.parseInt(tfPort.getText()));
} catch (IOException e) { }
while(true){
try {
connectionSocket=listenSocket.accept();
@SuppressWarnings("unused")
webClient client=new webClient(connectionSocket);
} catch (IOException e) {
}
}
}
});
}
public static void main(String args[])throws Exception{
GUI();
}
public static void GUI(){
JFrame f=new JFrame("小白兔Web服务器(BY 丁寻)");
f.setSize(300,200);
f.setLocation(500, 300);
f.getContentPane().add(pane,BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
//不可以变大变小
f.setResizable(false);
pane.add(new JLabel("端口号:"));
pane.add(tfPort);
pane.add(btStart);
pane.add(btStop);
pane.add(new JLabel("配置路径"));
pane.add(tfURL);
pane.add(tfState);
pane.add(new JLabel("新IP请求"));
pane.add(tfNewIP);
pane.add(btAllow);
pane.add(btRepel);
pane.add(btReloadIP); btStart.addActionListener(new Listener());
btStop.addActionListener(new Listener());
btAllow.addActionListener(new Listener());
btRepel.addActionListener(new Listener());
btReloadIP.addActionListener(new Listener());
}
static class Listener implements ActionListener {
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent event) {
if(event.getActionCommand()=="启动服务器"){
try {
url=tfURL.getText();
readIP();
tfState.setText("服务器已经启动......地址:"
+InetAddress.getLocalHost().toString());
} catch (Exception e) {
e.printStackTrace();
} try {
new WebServer();
} catch (IOException e) {
e.printStackTrace();
} serverThread.start(); btStart.setEnabled(false);
tfPort.setEditable(false);
btStop.setEnabled(true);
tfURL.setEditable(false);
btReloadIP.setEnabled(true);
}
if(event.getActionCommand()=="停止服务器"){
serverThread.stop();
tfState.setText("服务器已经停止");
btStart.setEnabled(true);
tfPort.setEditable(true);
btStop.setEnabled(false);
tfURL.setEditable(true);
btReloadIP.setEnabled(false);
}
if(event.getActionCommand()=="允许此IP"){
IPadmin=true;
//serverThread.start();
click=true;
btAllow.setEnabled(false);
btRepel.setEnabled(false);
tfNewIP.setText(null);
}
if(event.getActionCommand()=="拒绝此IP"){
click=true;
IPadmin=false;
//serverThread.start();
btAllow.setEnabled(false);
btRepel.setEnabled(false);
tfNewIP.setText(null);
}
if(event.getActionCommand()=="更新合法IP列表"){
try {
readIP();
} catch (IOException e) {
// e.printStackTrace();
}
}
}
}
public static void readIP() throws IOException{
int i=0;
byte[] ips = new byte[65535];
File IPfile=new File(url+"checkIP.txt");
FileInputStream fileReader=new FileInputStream(IPfile);
fileReader.read(ips);
fileReader.close();
String strip=new String(ips);
StringTokenizer getIP=new StringTokenizer(strip,System.getProperty("line.separator"));
for(;;){
if(getIP.hasMoreTokens()){
checkIP[i]=getIP.nextToken();
System.out.println(checkIP[i]);
i++;
}
else{break;}
}
IPnum=i;
}
public static void disconnect(webClient c){
try {
//c.stop();
c.socket.close();
c.socket=null;
c=null; } catch (IOException e) {
e.printStackTrace();
}
//
}
class webClient extends Thread{
boolean check=true;
boolean send=false;
Socket socket;
BufferedReader inFromClient=null;
DataOutputStream outToClient=null;
String fileName;
String requestMessageLine;
StringTokenizer tokenizedLine=null;
FileInputStream inFile=null;
byte[] fileInBytes=null;
int numOfBytes=0;
File afile=new File(url+"log.html");
byte[] b;
public webClient(Socket s) throws IOException{
FileOutputStream out=new FileOutputStream(afile,true);
StringBuffer str=new StringBuffer();
SimpleDateFormat formatter=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String time=formatter.format(new Date());
socket=s;
str.append(time+" Client_IP:"+socket.getInetAddress().toString()+
" Client_Port:"+socket.getPort()+"<br>"+
System.getProperty("line.separator")
);
b=(new String(str)).getBytes();
System.err.println(new String(str));
out.write(b);
out.close();
inFromClient=new BufferedReader(new
InputStreamReader(socket.getInputStream()));
outToClient=new DataOutputStream(socket.getOutputStream());
if(!checkIP(socket)){
String strWait="<html>" +
"<title>等待验证</title>" +
"<body>正在等待管理员验证您的IP是否合法,请稍候......<br><br>" +
"(如果页面没有自动跳转,请每5秒钟刷新一次," +
"以判断管理员是否已经允许您进入)</body>" +
"</html>";
byte[] waiting=strWait.getBytes();
outToClient.writeBytes("HTTP/1.1 200 Document Follows\r\n");
outToClient.writeBytes("Content-Type: text/html\r\n");
outToClient.writeBytes("Content-Length: "+waiting.length+"\r\n");
outToClient.writeBytes("\r\n");
outToClient.write(waiting,0,waiting.length);
if(!admin()){
return;
}
WebServer.IPadmin=false;
}
this.start(); }
public void receive() throws IOException{
while(socket!=null){
requestMessageLine=inFromClient.readLine();
if(requestMessageLine.length()==0){break;}
System.out.println(requestMessageLine);
tokenizedLine=new StringTokenizer(requestMessageLine);
if(tokenizedLine.hasMoreTokens()){
String strhead=tokenizedLine.nextToken();
if(strhead.equals("GET")){
send=true;
fileName=tokenizedLine.nextToken();
if(fileName.equals("/")){
fileName="index.html";
}
else if(fileName.startsWith("/")){
fileName=fileName.substring(1);
fileName=fileName.replace("%5C", "/");
fileName=fileName.replace("%20", " ");
//如果是文件 ,不要check
check=false;
}
}//endnexttoken
if(check){
if(strhead.equals("User-Agent:")){
if(requestMessageLine.contains("Firefox/3")){
System.err.println("true");
}
else{
System.err.println("false");
fileName="ERROR.html";
send=true;
}
}
}
//....
}//endhastoken
}//endwhile
if(send){
readFile();
send(fileInBytes, numOfBytes);
} }
public void send(byte[] fileInBytes,int numOfBytes) throws IOException{
outToClient.writeBytes("HTTP/1.1 200 Document Follows\r\n"); if(fileName.endsWith(".jpg")){
outToClient.writeBytes("Content-Type: image/jpg\r\n");
}
else if(fileName.endsWith(".gif")){
outToClient.writeBytes("Content-Type: image/gif\r\n");
}
else if(fileName.endsWith(".wmv")){
outToClient.writeBytes("Content-Type: video/x-ms-wmv\r\n");
}
else if(fileName.endsWith(".avi")){
outToClient.writeBytes("Content-Type: video/avi\r\n");
}
else if(fileName.endsWith(".html")||fileName.endsWith(".htm")){
outToClient.writeBytes("Content-Type: text/html\r\n");
}
outToClient.writeBytes("Content-Length: "+numOfBytes+"\r\n"); outToClient.writeBytes("\r\n");
outToClient.write(fileInBytes,0,numOfBytes);
}
//得到文件
public void readFile() throws IOException{
File file=new File(url+fileName);
b=(" Client_Request:"+fileName+"<br>"+
System.getProperty("line.separator")).getBytes();
FileOutputStream out=new FileOutputStream(afile,true);
out.write(b);
out.close();
numOfBytes=(int)file.length();
inFile=new FileInputStream(url+fileName);
fileInBytes=new byte[numOfBytes];
inFile.read(fileInBytes);
inFile.close(); }
public boolean checkIP(Socket skt){
for(int i=0;i<WebServer.IPnum;i++){
if(skt.getInetAddress().toString().equals(checkIP[i])){
return true;
}
}
return false;
}
public boolean admin() throws IOException{
WebServer.tfNewIP.setText("IP:"+socket.getInetAddress().toString()+
" PORT:"+socket.getPort());
WebServer.btAllow.setEnabled(true);
WebServer.btRepel.setEnabled(true);
while(!click){}
click=false;
if(WebServer.IPadmin){
File IPFile=new File(url+"checkIP.txt");
FileOutputStream appIP=new FileOutputStream(IPFile,true);
byte[] ips=(socket.getInetAddress().toString()+
System.getProperty("line.separator")).getBytes();
appIP.write(ips);
appIP.close();
//WebServer.readIP();
WebServer.checkIP[IPnum]=socket.getInetAddress().toString();
WebServer.IPnum++;
return true;
}
else{
WebServer.disconnect(this);
return false;
}
}
public void run(){
try {
receive();
} catch (IOException e) {
}
WebServer.disconnect(this);
}
}}
⑻ 一个搭建java web服务器的问题,需求如下
自己写WEB服务器一般比较复杂,建议用开源软件搭建WEB服务器即可。如果偏向于JAVA开发的话,可以选择Tomcat