求java服务器端大神,解释一下servlet这些名词概念吧。。

时间:2022-02-18 20:56:29
有这些东东,我这几天弄得有些懵了:
servlet  这个是容器嘛,我想问是不是war打包的web应用只能用servlet容器?
我本来想再服务器端用socket监听端口,然后我用sae(新浪服务器),结果它只允许我上传war包 求java服务器端大神,解释一下servlet这些名词概念吧。。
然后我就蒙了。。。初学者不怎么能搞懂,为什么我不能部署socket应用到sae?
而且到底什么叫服务器呢。。我随便写一个小程序把客户端发来的请求转发回去这也叫服务器?
那Tomcat,jetty到底是用来干什么的。。。
求java服务器端大神,解释一下servlet这些名词概念吧。。
搞不懂啊!!
更麻烦的是什么ejb,spring,rmi。。。这些东东又到底是用来干嘛的啊。。。。
所谓的j2ee又是神马。。。。

7 个解决方案

#1


servlet  这个是容器嘛?


Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。 求java服务器端大神,解释一下servlet这些名词概念吧。。

随便写一个小程序把客户端发来的请求转发回去这也叫服务器?

我的理解:是的
下面是Servlet容器服务器原理 简易实现代码,当然服务器肯定没这么简单,只是帮助理解..
package cn.itcast.web1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 静态的网页服务器
 * 
 * @author APPle
 * 
 */
public class StaticWebServer {

public static void main(String[] args) {
int port = 8888;
try {
// 开启服务器,等待客户端的链接
ServerSocket ss = new ServerSocket(port);
System.out.println("服务器已经启动,正在监听" + port + "端口...");

// 不断地接收客户端的请求
while (true) {

final Socket socket = ss.accept();

// 用多线程可以处理多个客户端的请求
new Thread() {
public void run() {
try {
// 接收客户端发送过来的信息
InputStream in2 = socket.getInputStream();
for (int b = -1; (b = in2.read()) != -1;) {
System.out.print((char) b);
}
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));

// 请求行
String requestLine = br.readLine();
// GET /a.html HTTP/1.1
// GET /b.html HTTP/1.1
// GET /news/aaa.html HTTP/1.1
// 客户端请求资源的名称
String request = requestLine.split(" ")[1];

String base = "e:/myweb";

// 请求资源在本机上路径
String resPath = base + request;

// 如果请求根目录的时候,返回一个默认页面给客户端
if (request.equals("/")) {
resPath = base + "/index.html";
}

// 当找不到资源的时候,给客户端返回一个友好的404页面
File resFile = new File(resPath);
if (!resFile.exists()) {
resPath = base + "/404.html";
}

// 把数据发送到网络的另外一端(客户端)
OutputStream out = socket.getOutputStream();
InputStream in = new FileInputStream(resPath);

for (int b = -1; (b = in.read()) != -1;) {
out.write(b);
}
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}

#2


引用 1 楼 sc6231565 的回复:
servlet  这个是容器嘛?


Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。 求java服务器端大神,解释一下servlet这些名词概念吧。。

随便写一个小程序把客户端发来的请求转发回去这也叫服务器?

我的理解:是的
下面是Servlet容器服务器原理 简易实现代码,当然服务器肯定没这么简单,只是帮助理解..
package cn.itcast.web1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 静态的网页服务器
 * 
 * @author APPle
 * 
 */
public class StaticWebServer {

public static void main(String[] args) {
int port = 8888;
try {
// 开启服务器,等待客户端的链接
ServerSocket ss = new ServerSocket(port);
System.out.println("服务器已经启动,正在监听" + port + "端口...");

// 不断地接收客户端的请求
while (true) {

final Socket socket = ss.accept();

// 用多线程可以处理多个客户端的请求
new Thread() {
public void run() {
try {
// 接收客户端发送过来的信息
InputStream in2 = socket.getInputStream();
for (int b = -1; (b = in2.read()) != -1;) {
System.out.print((char) b);
}
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));

// 请求行
String requestLine = br.readLine();
// GET /a.html HTTP/1.1
// GET /b.html HTTP/1.1
// GET /news/aaa.html HTTP/1.1
// 客户端请求资源的名称
String request = requestLine.split(" ")[1];

String base = "e:/myweb";

// 请求资源在本机上路径
String resPath = base + request;

// 如果请求根目录的时候,返回一个默认页面给客户端
if (request.equals("/")) {
resPath = base + "/index.html";
}

// 当找不到资源的时候,给客户端返回一个友好的404页面
File resFile = new File(resPath);
if (!resFile.exists()) {
resPath = base + "/404.html";
}

// 把数据发送到网络的另外一端(客户端)
OutputStream out = socket.getOutputStream();
InputStream in = new FileInputStream(resPath);

for (int b = -1; (b = in.read()) != -1;) {
out.write(b);
}
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}


谢谢你。。。不过我主要是想问服务器端的各种框架是个什么关系啊。。。
像war包能不能部署非servlet的应用?有入口函数main的那种?

#3


楼主,war包是包含web应用的一个包后缀名,servlet不是部署在war包上,servlet是一种java技术,就像你的socket一样,war包是包含了web程序的一个包,其中可以有servlet,可以有struts,可以有spring,可以有任何能在容器中运行的代码,只要按照标准目录来建立。现在回过头来,你是想把socket程序部署到sae上面,也有办法,你自己写一个jsp页面,调用后台的servlet,servlet再调用你那个socket程序,这样就可以了。

#4


楼上都说了。。

#5


框架就是用来开发服务器的,

#6


多看多写,自然就会懂的

#7


好好看看书,比来这里提问管用。这里只能解决一些具体问题,系统学习不适合

#1


servlet  这个是容器嘛?


Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。 求java服务器端大神,解释一下servlet这些名词概念吧。。

随便写一个小程序把客户端发来的请求转发回去这也叫服务器?

我的理解:是的
下面是Servlet容器服务器原理 简易实现代码,当然服务器肯定没这么简单,只是帮助理解..
package cn.itcast.web1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 静态的网页服务器
 * 
 * @author APPle
 * 
 */
public class StaticWebServer {

public static void main(String[] args) {
int port = 8888;
try {
// 开启服务器,等待客户端的链接
ServerSocket ss = new ServerSocket(port);
System.out.println("服务器已经启动,正在监听" + port + "端口...");

// 不断地接收客户端的请求
while (true) {

final Socket socket = ss.accept();

// 用多线程可以处理多个客户端的请求
new Thread() {
public void run() {
try {
// 接收客户端发送过来的信息
InputStream in2 = socket.getInputStream();
for (int b = -1; (b = in2.read()) != -1;) {
System.out.print((char) b);
}
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));

// 请求行
String requestLine = br.readLine();
// GET /a.html HTTP/1.1
// GET /b.html HTTP/1.1
// GET /news/aaa.html HTTP/1.1
// 客户端请求资源的名称
String request = requestLine.split(" ")[1];

String base = "e:/myweb";

// 请求资源在本机上路径
String resPath = base + request;

// 如果请求根目录的时候,返回一个默认页面给客户端
if (request.equals("/")) {
resPath = base + "/index.html";
}

// 当找不到资源的时候,给客户端返回一个友好的404页面
File resFile = new File(resPath);
if (!resFile.exists()) {
resPath = base + "/404.html";
}

// 把数据发送到网络的另外一端(客户端)
OutputStream out = socket.getOutputStream();
InputStream in = new FileInputStream(resPath);

for (int b = -1; (b = in.read()) != -1;) {
out.write(b);
}
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}

#2


引用 1 楼 sc6231565 的回复:
servlet  这个是容器嘛?


Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。 求java服务器端大神,解释一下servlet这些名词概念吧。。

随便写一个小程序把客户端发来的请求转发回去这也叫服务器?

我的理解:是的
下面是Servlet容器服务器原理 简易实现代码,当然服务器肯定没这么简单,只是帮助理解..
package cn.itcast.web1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 静态的网页服务器
 * 
 * @author APPle
 * 
 */
public class StaticWebServer {

public static void main(String[] args) {
int port = 8888;
try {
// 开启服务器,等待客户端的链接
ServerSocket ss = new ServerSocket(port);
System.out.println("服务器已经启动,正在监听" + port + "端口...");

// 不断地接收客户端的请求
while (true) {

final Socket socket = ss.accept();

// 用多线程可以处理多个客户端的请求
new Thread() {
public void run() {
try {
// 接收客户端发送过来的信息
InputStream in2 = socket.getInputStream();
for (int b = -1; (b = in2.read()) != -1;) {
System.out.print((char) b);
}
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));

// 请求行
String requestLine = br.readLine();
// GET /a.html HTTP/1.1
// GET /b.html HTTP/1.1
// GET /news/aaa.html HTTP/1.1
// 客户端请求资源的名称
String request = requestLine.split(" ")[1];

String base = "e:/myweb";

// 请求资源在本机上路径
String resPath = base + request;

// 如果请求根目录的时候,返回一个默认页面给客户端
if (request.equals("/")) {
resPath = base + "/index.html";
}

// 当找不到资源的时候,给客户端返回一个友好的404页面
File resFile = new File(resPath);
if (!resFile.exists()) {
resPath = base + "/404.html";
}

// 把数据发送到网络的另外一端(客户端)
OutputStream out = socket.getOutputStream();
InputStream in = new FileInputStream(resPath);

for (int b = -1; (b = in.read()) != -1;) {
out.write(b);
}
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}


谢谢你。。。不过我主要是想问服务器端的各种框架是个什么关系啊。。。
像war包能不能部署非servlet的应用?有入口函数main的那种?

#3


楼主,war包是包含web应用的一个包后缀名,servlet不是部署在war包上,servlet是一种java技术,就像你的socket一样,war包是包含了web程序的一个包,其中可以有servlet,可以有struts,可以有spring,可以有任何能在容器中运行的代码,只要按照标准目录来建立。现在回过头来,你是想把socket程序部署到sae上面,也有办法,你自己写一个jsp页面,调用后台的servlet,servlet再调用你那个socket程序,这样就可以了。

#4


楼上都说了。。

#5


框架就是用来开发服务器的,

#6


多看多写,自然就会懂的

#7


好好看看书,比来这里提问管用。这里只能解决一些具体问题,系统学习不适合