//定義一個繼承HttpServlet的類,咱們要實現doGet和doPost方法java
public class myServlet extends HttpServlet {ide
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("hello myservlet"); }
}.net
//httpServlet中定義了不少方法,我只取啦一小部分代碼 public abstract class HttpServlet extends GenericServlet {code
private static final long serialVersionUID = 1L; private static final String METHOD_DELETE = "DELETE"; private static final String METHOD_HEAD = "HEAD"; private static final String METHOD_GET = "GET"; private static final String METHOD_OPTIONS = "OPTIONS"; private static final String METHOD_POST = "POST"; private static final String METHOD_PUT = "PUT"; private static final String METHOD_TRACE = "TRACE"; private static final String HEADER_IFMODSINCE = "If-Modified-Since"; private static final String HEADER_LASTMOD = "Last-Modified"; private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings"; private static final ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings"); public HttpServlet() { } protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString("http.method_get_not_supported"); if (protocol.endsWith("1.1")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } }
//定義一個類實現過濾器繼承
public class myFilter implements Filter {get
public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("myFilter process"); //放行 filterChain.doFilter(servletRequest,servletResponse); } [@Override](https://my.oschina.net/u/1162528) public void destroy() { }
}servlet
//Filter是怎麼寫的it
public interface Filter {io
default void init(FilterConfig filterConfig) throws ServletException {
}ast
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; default void destroy() {
} }
//定義一個類實現servlet監聽器
public class myListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent sce) { System.out.println("contextIntialized ... close"); } public void contextInitialized(ServletContextEvent sce) { System.out.println("contextInitialized is 啓動"); }
}
//ServletContextListener是怎麼寫的
public interface ServletContextListener extends EventListener {
default void contextInitialized(ServletContextEvent sce) { } default void contextDestroyed(ServletContextEvent sce) { }
}
//看EventListener怎麼寫的
public interface EventListener {
}
//寫個配置類,將上面的注入到容器中注意@Configuration和Bean必須寫上
@Configuration
public class myServerConfig {
//注入三大組間 @Bean
public ServletRegistrationBean myserlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new myServlet(), "/myservlet"); return registrationBean;
}
@Bean public FilterRegistrationBean myfilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new myFilter()); filterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myservlet")); return filterRegistrationBean;
}
@Bean public ServletListenerRegistrationBean mylistener(){
ServletListenerRegistrationBean<myListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>(new myListener()); return servletListenerRegistrationBean;
}
}