目录
idea快捷键
拦截器是SpringMVC中一种对象,能拦截器对Controller的请求。
拦截器框架中有系统的拦截器, 还可以自定义拦截器。 实现对请求预先处理。
实现自定义拦截器:
创建类实现SpringMVC框架的HandlerInterceptor接口
- public interface HandlerInterceptor {
- default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- return true;
- }
-
- default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
- }
-
- default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
- }
- }
2.需在SpringMVC的配置文件中,声明拦截器
- <mvc:interceptors>
- <mvc:interceptor>
-
- <bean class="拦截器类全限定名称"/>
- mvc:interceptor>
- mvc:interceptors>
SpringBoot中注册拦截器:
login是排除用的
- @Configuration
- public class MyAppConfig implements WebMvcConfigurer {
-
- //添加拦截器对象, 注入到容器中
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
-
- //创建拦截器对象
- HandlerInterceptor interceptor = new LoginInterceptor();
-
- //指定拦截的请求uri地址
- String path []= {"/user/**"};
- //指定不拦截的地址
- String excludePath [] = {"/user/login"};
- registry.addInterceptor(interceptor)
- .addPathPatterns(path)
- .excludePathPatterns(excludePath);
-
- }
- }
在SpringBoot框架中使用Servlet对象。
使用步骤:
创建Servlet类。 创建类继承HttpServlet
注册Servlet ,让框架能找到Servlet
1.创建自定义Servlet
- //创建Servlet类
- public class MyServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- doPost(req,resp);
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //使用HttpServletResponse输出数据,应答结果
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter out = resp.getWriter();
- out.println("===执行的是Servlet==");
- out.flush();
- out.close();
-
- }
- }
2. 注册Servlet
- @Configuration
- public class WebApplictionConfig {
-
- //定义方法, 注册Servlet对象
- @Bean
- public ServletRegistrationBean servletRegistrationBean(){
-
- //public ServletRegistrationBean(T servlet, String... urlMappings)
- //第一个参数是 Servlet对象, 第二个是url地址
-
- //ServletRegistrationBean bean =
- //new ServletRegistrationBean( new MyServlet(),"/myservlet");
-
-
- ServletRegistrationBean bean = new ServletRegistrationBean();
- bean.setServlet( new MyServlet());
- bean.addUrlMappings("/login","/test"); //
-
-
- return bean;
- }
- }
Filter是Servlet规范中的过滤器,可以处理请求, 对请求的参数, 属性进行调整。 常常在过滤器中处理字符编码
在框架中使用过滤器:
创建自定义过滤器类
注册Filter过滤器对象
query是没有内容的!
- // 自定义过滤器
- public class MyFilter implements Filter {
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- System.out.println("执行了MyFilter,doFilter ");
- filterChain.doFilter(servletRequest,servletResponse);
- }
- }
Ctrl+o
注册Filter
- @Configuration
- public class WebApplicationConfig {
-
- @Bean
- public FilterRegistrationBean filterRegistrationBean(){
- FilterRegistrationBean bean = new FilterRegistrationBean();
- bean.setFilter( new MyFilter());
- bean.addUrlPatterns("/user/*");
- return bean;
- }
- }
CharacterEncodingFilter : 解决post请求中乱码的问题
在SpringMVC框架, 在web.xml 注册过滤器。 配置他的属性。
第一种方式:
使用步骤:
配置字符集过滤器
- @Configuration
- public class WebSystemConfig {
-
- //注册Servlet
- @Bean
- public ServletRegistrationBean servletRegistrationBean(){
- MyServlet myServlet = new MyServlet();
- ServletRegistrationBean reg = new ServletRegistrationBean(myServlet,"/myservlet");
- return reg;
- }
-
-
- //注册Filter
- @Bean
- public FilterRegistrationBean filterRegistrationBean(){
- FilterRegistrationBean reg = new FilterRegistrationBean();
-
- //使用框架中的过滤器类
- CharacterEncodingFilter filter = new CharacterEncodingFilter();
- //指定使用的编码方式
- filter.setEncoding("utf-8");
- //指定request , response都使用encoding的值
- filter.setForceEncoding(true);
-
- reg.setFilter(filter);
- //指定 过滤的url地址
- reg.addUrlPatterns("/*");
-
-
- return reg;
- }
- }
修改application.properties文件, 让自定义的过滤器起作用
- #SpringBoot中默认已经配置了CharacterEncodingFilter。 编码默认ISO-8859-1
- #设置enabled=false 作用是关闭系统中配置好的过滤器, 使用自定义的CharacterEncodingFilter
- server.servlet.encoding.enabled=false
第二种方式
修改application.properties文件
- server.port=9001
- server.servlet.context-path=/myboot
-
- #让系统的CharacterEncdoingFilter生效
- server.servlet.encoding.enabled=true
- #指定使用的编码方式
- server.servlet.encoding.charset=utf-8
- #强制request,response都使用charset属性的值
- server.servlet.encoding.force=true
ctrl+ait+b=进入实现类
ctrl+shift+f=全局搜索
ait+鼠标跳格选择
ctrl+alt+←返回上一步操作处
ctrl+alt+v 生成返回值对象快捷键
alt+←或→左右切换已打开的类
ctrl+r搜索并替换
ctrl+o查看并选择继承覆盖当前类的方法
shift+箭头 左右选择一位
ctrl+箭头 左右跳一个完整的单词
ctrl++shift+箭头 左右选全一个完整的单词
IDEA对选中的多行代码上下左右移动
选中代码
代码右移:TAB键
代码左移:shift+TAB键
代码上移:shift+alt +方向键上
代码下移:shift+alt +方向键下