- 服务框架
定义:实现服务的一系列接口,通过这些接口服务,使多个服务线程(handler thread)与客户实现交互。服务被定义为某个协议(如Http, FTP)的一个实现。 - 服务器框架
服务器是Java虚拟机的一个实例。一个服务器可以支持多个并发服务,这些服务在服务器进程初始化过程中启动。例如:一个服务器,它一般可以启动系统管理服务、HTTP服务,很可能还要启动Web代理服务。在服务器运行中,仍然可以增加、删除服务。 - Servlet 框架
servlet是符合由JavaServer 体系结构定义的特殊接口的Java对象。servlet 有服务器夹在和调用,而一个服务同时可以使用多个servlet。 无论是由服务器提供的内建servlet,还是用户编写的,作为附件的servlet,都可以将servlet认为是可扩展服务功能的简单方法。
Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。
什么是Servlet
Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
接收请求数据;
处理请求;
完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。
实现Servlet的方式
实现Servlet有三种方式:
1. 实现javax.servlet.Servlet接口;
2. 继承javax.servlet.GenericServlet类;
3. 继承javax.servlet.http.HttpServlet类;
通常我们会去继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始学习。
Servlet.java
public interface Servlet {
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
接下来我们开始准备完成Servlet,完成Servlet需要分为两步:
编写Servlet类;
在web.xml文件中配置Servlet;
HelloWorld.java
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class HelloWorld extends HttpServlet {
private String message;
public void init() throws ServletException {
// Do required initialization
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// do nothing.
}
}
web.xml
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
在web.xml中配置Servlet的目的其实只有一个,就是把访问路径与一个Servlet绑定到一起,上面配置是把访问路径:“/helloworld”与“HelloServlet”绑定到一起。
<servlet>
:指定HelloServlet这个Servlet的名称为hello;
<servlet-mapping>
:指定/helloworld访问路径所以访问的Servlet名为hello
<servlet>
和<servlet-mapping>
通过这个元素关联在一起了!
接下来,我们编译HelloServlet,注意,编译HelloServlet时需要导入servlet-api.jar,因为Servlet.class等类都在servlet-api.jar中。
javac -classpath /home/king/Documents/apache-tomcat-8.5.27/lib/servlet-api.jar -d . HelloServlet.java
然后把HelloServlet.class放到/helloservlet/WEB-INF/classes/目录下,在浏览器中访问:http://localhost:8080/helloservlet/helloworld即可在控制台上看到输出!
Hello World