Java的各种框架虽然好,但是这些框架底层的实现技术,才是真正核心的东西。框架会随着时间更迭,底层核心却永远不变。学习各种框架的时候,不能忘记实现它们的核心技术。最近我会花时间重温Serlvet的知识,这对理解SpringMVC和SpringBoot等框架的底层原理有很大的帮助。
下面用了一个简单的示意图,说明了Servlet的作用。由图可知,Servlet(Server applet)实际上就是基于HTTP协议的在服务端生成的小程序,用于前后端数据交互。所以从归属上来说,Servlet是属于服务器端而不是前端的技术。
从代码上来说,实际上一个Servlet就是一个实现HttpServlet借口的Java类,如下就是一个普通的Servlet
public class MyServlet extends HttpServlet{
}
Servlet由支持Servlet的Web服务器调用和运行,比如tomcat
一个Servlet实际上可以响应一个或者一组URL的请求,并返回响应请求。这主要是通过以下方式实现的:在Servlet类中重写HttpServlet的service方法,并在WEB-INF下的web.xml文件里配置http请求与Servlet类的映射关系,web服务器(这里是tomcat)就会自动识别你的Servlet类里重写的service方法并执行。这里有两个注意事项:1.一定要是重写HttpServlet里的service方法,普通service方法tomcat无法自动识别;2.一定要配置Servlet类与地址栏路径的映射,不然通过地址栏中访问。
代码如下:
//MyServlet.class
public class MyServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
resp.getWriter().write("mytomcat");
}
}
//web.xml
<web-app .....>
<servlet>
<servlet-name>MyServlet</servlet-name> //这里的名字可以随便起
<servlet-class>com.XXX.MyServlet</servlet-class> //你想要配置的那个Servlet类的全路径
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name> //与上面配置的servlet-name一致,这样才能建立映射关系
<url-pattern>/MyServlet</url-pattern> //这里的路径可以随便起,这是用在在地址栏中登陆这个Servlet的路径
</servlet-mapping>
</web-app>
有了以上配置之后,启动tomcat,打开浏览器在地址栏中输入 localhost:8080/MyServlet
,就会有以下显示
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20605.html