文章目录
前言
提示:这里可以添加本文要记录的大概内容:
在 javaEE中有三大标准组件:
- Servelt 组件
- Filter组件(过滤器组件)
- Listener组件(监听器组件)
提示:以下是本篇文章正文内容,下面案例可供参考
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/s1")
public class Servlet1 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf8");
PrintWriter writer = resp.getWriter();
writer.print("<h1>第一个servlet</h1>");
}
}
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/s2")
public class Servlet2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf8");
PrintWriter writer = resp.getWriter();
writer.print("<h1>第二个servlet</h1>");
}
}
过滤器 Filter
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
@WebFilter("/*")
public class WebHttpFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO 自动生成的方法存根
System.out.println("请求已拦截");
}
}
重新运行Tomcat,刷新浏览器:浏览器大白屏幕
回到控制台:请求已拦截
在输出后加上下面代码:
chain.doFilter(request, response);
控制显示请求已拦截
浏览器输出:
删掉Servlet1和2中的代码:
resp.setContentType("text/html;charset=utf8");
会发现乱码:
接着在WebHttpFilter输出后加上下面代码:
把这参数强转成http类型
HttpServletResponse resp = (HttpServletResponse)response;
resp.setContentType("text/html;charset=utf8");
监听器 Listener
package listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class WebServerLisener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("监听到了服务器正在启动");
}
}