1.Servlet的注册
:JavaEE
Web.xml
<servlet> <servlet-name>userServlet</servlet-name> <servlet-class>cn.taotao.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>userServlet</servlet-name> <url-pattern>/user.do</url-pattern> </servlet-mapping>
注解方式
@WebServlet("/user.do")
:Springboot
创建servlet
public class UserServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //super.doGet(req, resp); doPost(req, resp); //转向调用dopost } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); System.out.println("dopost method"); } }
@Configuration public class WebObjectConfig { private static final String USER_SERVLET_NAME = "userServlet"; @Bean(name=USER_SERVLET_NAME) public UserServlet getUserServlet() { return new UserServlet(); } /*** * 注册servlet */ @Bean @ConditionalOnBean(value = UserServlet.class ,name = USER_SERVLET_NAME) public ServletRegistrationBean<UserServlet> servletRegistrationBean(UserServlet userServlet){ //userServelt 会自动autowire ServletRegistrationBean<UserServlet> registrationBean = new ServletRegistrationBean<UserServlet>(); registrationBean.setServlet(userServlet); registrationBean.addUrlMappings("/user.do","/user.action");//可变参数,可以多个
//注入参数
registrationBean.addInitParameter("env", "UTF-8");
//设置启动时,自动加载,如果不设置,需要第一次访问时,上面的utf-8的配置才会生效
registrationBean.setLoadOnStartup(0);
return registrationBean; } }
访问 http://localhost/user.do 可以看到后台打印dopost method
添加参数 ,在userServlet的类里继续配置
@Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub super.init(config); String initParameter = config.getInitParameter("env"); System.out.println(initParameter); }
---------------------------------
可以把注入的urlpattern写入配置文件
在类上加入@ConfigurationPorperties(prefix="myweb")
在类中加入
private String[] urlpattern;加入set get方法
然后建立配置文件,在application.yml 中,加入
myweb.
urlpattern
- /user.do
- /user.action
################################################################
2.filter的注册
:JaveEE
<filter> <filter-name>userFilter</filter-name> <filter-class>cn.taotao.userFilter</filter-class> </filter> <filter-mapping> <filter-name>userFilter</filter-name> <servlet-name>xxx</servlet-name> <url-pattern>xxx</url-pattern> </filter-mapping>
注解方式
@WebFilter("/*")
:Springboot
创建filter类
public class UserFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("dofilter"); chain.doFilter(request, response); } }
创建filter配置类
@Bean public UserFilter userFilter() { return new UserFilter(); } @Bean public FilterRegistrationBean<UserFilter> filterRegistrationBean(UserFilter userFilter){ FilterRegistrationBean<UserFilter> registrationBean = new FilterRegistrationBean<UserFilter>(); registrationBean.setFilter(userFilter); Collection<String> urlPatterns = new ArrayList<String>(); urlPatterns.add("/*"); registrationBean.setUrlPatterns(urlPatterns ); // registrationBean.setServletNames(servletNames);
registrationBean.addInitParameter("env", "UTF-8");
return registrationBean; }
@Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub Filter.super.init(filterConfig); String initParameter = filterConfig.getInitParameter("env"); System.out.println(initParameter); }
#########################################################################
3.listener的注册
一共有6个监听器,监听6个对象;分别对应6个接口
分别对应3个范围,两两成对。
ServletContext --------- ServletContextListener ServletContextAttributeListener
HttpSession ------------ HttpSessionListener HttpSessionAttributeListener
HttpServletRequest -----------------ServletRequestListener ServletRequestAttributeListenter
:JavaEE
<listener> <listener-class>cn.taotao.UserListener</listener-class> </listener>
注解方式
@WebListener
:Springboot
创建监听类对象
public class MyListener implements ServletContextListener{ //重写2个方法,一个创建的时候,一个是销毁的时候 @Override public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub ServletContextListener.super.contextInitialized(sce); ServletContext context = sce.getServletContext(); //获取上下文路径 context.setAttribute("ctx", context.getContextPath()); String initParameter = context.getInitParameter("env"); System.out.println(initParameter); System.out.println("contextInitialized"); } @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub ServletContextListener.super.contextDestroyed(sce); } }
配置注册
@Bean public MyListener myListener() { return new MyListener(); } @Bean public ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean(MyListener myListener){ ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<MyListener>(); registrationBean.setListener(myListener); return registrationBean; }