前言
笔记
一、使用到的一些注解
1.@Component 相当于配置文件中的<bean id="" class=""/> 且会自动交由spring容器
不用再在配置类中手写bean
2.@Configuration //====>表示该类为配置类 等价于我们之前的xml文件
@Bean //xml文件中<bean class=""> 把方法返回的对象交于spring容器来管理 和上面配置类注解一起使用
3.人为指定扫描的包,有两种方式
第一种,在主函数的注解@SpringBootApplication(scanBasePackages={"xxx.yy"})
第二种,在主函数使用两个注解
@SpringBootApplication
@ComponentScan(basePackages="xxx.yy")
4.@Repository 被该注解使用的POJO类表示DAO层的实现类
二、注册listener组件
监听器能监听很多种,这里拿请求监听器写例子。步骤:
1.定义一个普通类,实现ServletRequestLister接口并重写里面的方法
2.在初始化方法里写业务代码
3.编写控制层请求测试能否拿到监听器里的数据
/**
* 使用ServletRequestListener获取访问信息
* @Component 相当于配置文件中的<bean id="" class=""/> 且会自动交由spring容器
* 不用再在配置类中手写bean
* @date :Created in 2022/11/16 12:49
*/
@Component
public class MyServletRequestListener implements ServletRequestListener {
private static final Logger logger = LoggerFactory.getLogger(MyServletRequestListener.class);
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
logger.info("session id为:{}", request.getRequestedSessionId());
logger.info("request url为:{}", request.getRequestURL());
request.setAttribute("name", "老六");
}
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
logger.info("request end");
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
logger.info("request域中保存的name值为:{}", request.getAttribute("name"));
}
}
编写控制层测试
/**
* 测试获取监听器中放的属性
* @param request
* @return
*/
@GetMapping("/request")
public String getRequestInfo(HttpServletRequest request) {
System.out.println(request.getAttribute("name"));
return "成功拿到数据";
}
三、注册servlet
(1) 创建一个类并继承HttpServlet
(2) 重写service方法 【doGet 或doPost方法】
(3)在spring boot项目主函数同级下,创建config的包,然后创建一个配置类
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是自己定义的servlet");
}
}
@Configuration //====>表示该类为配置类 等价于我们之前的xml文件
public class MyConfig {
@Bean //xml文件中<bean class=""> 把方法返回的对象交于spring容器来管理
public ServletRegistrationBean<HttpServlet> registrationBean(){
ServletRegistrationBean<HttpServlet> servletServletRegistrationBean=new ServletRegistrationBean<>();
servletServletRegistrationBean.setName("my");
servletServletRegistrationBean.addUrlMappings("/my");
servletServletRegistrationBean.setServlet(new MyServlet());
return servletServletRegistrationBean;
}
}
四、注册filter
1.定义一个过滤器类并实现Filter接口
2.重写接口中的抽象方法
3. 在web.xml文件中注册过滤器。就是在配置类里面继续使用@Bean注解注入bean
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤器编码");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
//在配置类里面实现
//过滤的注册
@Bean
public FilterRegistrationBean<Filter> filterRegistrationBean(){
FilterRegistrationBean<Filter> filterRegistrationBean=new FilterRegistrationBean<>();
filterRegistrationBean.setName("encondigFilter");
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setFilter(new MyFilter());
return filterRegistrationBean;
}
总结
无