Servlet基础
目录
-HelloServlet使用eclipse编写第一个Servlet
-Servlet概述
jsp的前身就是Servlet
什么是Servlet:Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序
-Tomcat容器等级
Tomcat容器分为四个等级,
1. Container 容器,集装箱
2.Engine 引擎容器
3.Host 主机()
4.Servlet容器(tomcat最低级别的容器)里面包含了一个或多个Context
—— Context (上下文,背景,环境) 一个context对应一个web项目
—— Wrapper 容器里的封装部分。
-HelloServlet手工编写第一个Servlet
1. 继承HttpServlet
Servlet层级关系:
Servlet(接口)-->GenericServlet(抽象类,与协议无关的Servlet)-->HttpServlet(抽象类,实现了Http协议的Servlet)-->Custom Servlet(自定义的Servlet)。
如何创建和使用Servlet?
2. 重写doGet()和doPost方法
3. 注册Servlet
a) 在web.xml中进行如下配置:
<servlet>
<!--类名-->
<servlet-name>HelloServlet</servlet-name>
<!--所在的包-->
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<!--访问的地址-->
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
b)Servlet3.0之后可以使用注解来表示所有xml中的配置:
@WebServlet(name="HelloServlet",value={"/servlet/HelloServlet"})
测试:
在Eclipse中新建DynamicWebProject的时候不要直接点"完成",在下一步有个勾选项(Generate web.xml deployment descriptor),选上就会默认生成web.xml
选择Superclass,输入HttpServlet -选择第一项- OK
选择source-Override/Implement methods
勾选doGet和doPost
Index.jsp
<%@ page language="java" import="java.util.*"
contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>第一个Servlet小例子</h1>
<hr>
<a href="servlet/HelloServlet">Get方式请求HelloServlet</a><br>
<form action="servlet/HelloServlet" method="post">
<input type="submit" value="Post方式请求HelloServlet">
</form>
</body>
</html>
HelloServlet.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承于HttpServlet
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get请求。。。");
PrintWriter out=response.getWriter();
out.println("<strong>Hello Servlet!</strong><br>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Post请求。。。");
PrintWriter out=response.getWriter();
out.println("<strong>Hello Servlet!</strong><br>");
}
}
Web.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
运行:
-HelloServlet使用eclipse编写第一个Servlet
Servlet不能自动配置web.xml的原因
建dynamic web project 时,dynamic web module version选择2.5就ok了。