Viewer. Js的url为什么servlet可行,form表单的action怎么写不可行?

    //设置编码和上传文件的大小
    • 多文件上传,只需将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可。

    • SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。
    • 将拦截器按照一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法和字段时,拦截器就会按照其之前定义的顺序被调用。
    • 拦截器是AOP思想的具体应用。
    是servlet规范中的一部分,任何java web工程都可以使用 是springmvc框架自己的,只有使用 了springmvc框架的工程才能用。
    在url-pattern中配置了/*后,可以对所有要访问的资源进行拦截 只会拦截访问的控制器方法,如果访问的是jsp,html,css,image或者js是不会拦截的
    • WEB-INF目录下的资源浏览器不能直接访问,需要访问controller方法,由方法通过视图解析器的解析才能访问web-inf下的资源
    • 这里要与之前的前端控制器有所区分,在前端控制器配置那里,我们在web.xml里配置了拦截所有的客户端请求,统一交由前端控制器dispatcherServlet来处理,如果访问的是对应的controller方法,则交由controller方法处理,如果是静态资源,则交由tomcat默认的servlet来处理。
    • 通过上面的图片可知webapp下面包括css,img等资源和web-inf目录。除了wen-inf下面的资源,其他的都可以在浏览器输入特定的地址来访问。web-inf则必须由controller经视图解析器解析后来访问。
    1. 有一个登陆页面,需要写一个controller访问页面。
    2. 登陆页面有一提交表单的动作。需要在controller中处理。判断用户名密码是否正确。如果正确, 向session中写入用户信息。返回登陆成功
    3. 拦截用户请求,判断用户是否登陆。如果用户已经登陆。放行, 如果用户未登陆,跳转到登陆页面
    1. 在默认的index.jsp上编写开始页面
    1. 配置springmvc.xml中的视图解析器和注解扫描

    **注意:**到目前我们可以访问登录这个界面。(如图)

    **存在的问题:**即使没有登录成功也可以从首页进入登录成功界面。实际开发中不能这样做。因此就需要进行拦截器的设置,来拦截未登录就成功进入登录成功界面的行为。

    • 根据springmvc.xml里关于拦截器的配置,对所有请求都进行了拦截。然后根据条件判断是否放行。

    自定义拦截器类的说明:

    方法将在请求处理之前进行调用,如果返回true就执行下一个拦截器,如果为false就不执行下一个拦截器。
    在请求处理方法执行后才被调用,前提是preHandle()方法返回true。它会在DispatcherServlet进行视图返回渲染之前调用,所以我们可以在这个方法中对controller处理之后的ModelAndView对象进行操作
    在整个请求结束后执行,做清理工作,前提是preHandle()返回值为true
    • 如果有多个拦截器,则在xml里配置在前的先执行,配置在后的后执行。

    • 当请求从客户端传过来时,首先会经过dispatcherServlet前端控制器处理,然后将请求交由handlerMapping处理器映射器来找具体的handler,handlerMapping处理器映射器在处理过程中会根据handler和拦截器生成一个处理器执行链返回给前端控制器,前端控制器根据这个链来依次执行操作,将它们交由处理器适配器HandlerAdaptor,执行后边的操作。
    • 这个过程中拦截器的定义点是HandlerMapping处理器映射器。拦截器有三个方法,其中preHandle()方法 在业务处理器处理请求之前被调用,SpringMVC 中的Interceptor是链式调用的,在一个应用中或者说是在一个请求中可以同时存在多个Interceptor。每个Interceptor 的调用会依据它的声明顺序依次执行,而且最先执行的都是Interceptor中的preHandle 方法,所以可以在这个方法中进行一些前置初始化操作或者是对当前请求的一个预处理,也可以在这个方法中进行一些判断来决定请求是否要继续进行下去。该方法的返回值是布尔值Boolean 类型的,当它返回为false 时,表示请求结束,后续的Interceptor
    • postHandle():这个方法在当前请求进行处理之后,也就是Controller方法调用之后执行但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller处理之后的ModelAndView
    • 时才会执行。顾名思义,该方法将在整个请求结束之后也就是在DispatcherServlet渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。afterCompletion方法被调用的方向和perHandle也是相反的,先声明的Interceptor的afterCompletion方法后执行。

我要回帖

更多关于 form表单的action怎么写 的文章

 

随机推荐