javaweb-Servlet基础
1、servlet基础
- Servlet是使用java Servlet接口(API)运行在web应用服务器上的java程序。
- 可以对web浏览器或其他http客户端程序发送的请求进行处理。
1.1、Servlet使用准备
使用Servlet需要导入jar:servlet-api.jar,jsp-api.jar
<!--或在maven项目中,添加servlet、jsp依赖到pom.xml-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId><!--导入servlet依赖到pom.xml-->
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId><!--导入jsp依赖到pom.xml-->
<version>2.2</version>
<scope>provided</scope>
</dependency>
1.2、Servlet API常用接口和类
接口:
- Servlet接口
- ServletConfig接口
- HttpServletRequest接口
- HttpServletResponse接口
类:
- GenericServlet类
- HttpServlet类
1.3、Servlet创建
import java.io.IOException;
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
@WebServlet("/TestServlet")//使用注解来配置server代码。注解为Servlet 3新增的特性。
public class TestServlet extends HttpServlet {//声明一个对象为Servlet时,需继承HttpServlet类
//初始化方法
public void init() throws ServletException {
super.init();
}
//处理HTTP Post请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
//处理HTTP Get请求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
//销毁方法
public void destroy() {
super.destroy();
}
}
1.4、Servlet配置
- 在
web.xml文件中配置Servlet:告知web容器哪一个请求调用哪一个Servlet对象处理,对Servlet起注册作用。 - 使用注解来配置server代码:注解为Servlet 3新增的特性。
在web.xml文件中配置Servlet
<servlet>
<servlet-name>MessageServlet</servlet-name><!--Servlet名-->
<servlet-class>com.jt.servlet.MessageServlet</servlet-class><!--在web上注册,继承HttpServlet类的java类-->
</servlet>
<servlet-mapping>
<servlet-name>MessageServlet</servlet-name><!--与Servlet名一致-->
<url-pattern>/MessageServlet</url-pattern><!--映射访问URL-->
</servlet-mapping>
1.5、Servlet过滤器
1.5.1、Filter API
-
Filtet接口
- 定义过滤器对象时需要实现此接口。
- 包含三个方法:init(FilterConfig FC), doFilter(ServletRequest SRq, ServletResponse SRp, FilterChain FC), destroy().
-
FilterChain接口
- 此接口由容器实现。
- 只有一个方法:doFilter(ServletRequest SRq, ServletResponse SRp) throw IOException,ServletException
-
FilterConfig接口
- 此接口由容器实现。
- 用用于获取过滤器初始化期间的参数信息。
- 方法:getFilterName(), gerInitParameter(String name), getInitParameterNames(), getServletContext()
1.5.2、Filter创建
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/NewFilter")
public class NewFilter implements Filter {
//初始化方法
public void init(FilterConfig config) throws ServletException {
}
//处理过滤器方法
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
chain.doFilter(req, resp);
}
//销毁方法
public void destroy() {
}
}
1.5.2、Filter配置
- 在
web.xml文件中配置。 - 使用注解来配置。
<filter><!--声明过滤器-->
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.jt.servlet.CharacterEncodingFilter</filter-class>
<!--设置初始化参数-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping><!--映射过滤器-->
<filter-name>CharacterEncodingFilter</filter-name>
<!--设置过滤器关联的URL样式,"/*"表示关联所有URL-->
<url-pattern>/*</url-pattern>
<!--设置过滤器对应的请求方式-->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
dispatcher:元素可选值,REQUEST、INCLUDE、FORWARD、ERROR。
浙公网安备 33010602011771号