summercool+ mybatis框架解决方案(2)

2019-03-22 23:11

\);

String message = \当前Dispatcher[\ + request.getRemoteAddr()

+ \ + url + \ + \当执行的时间为:[\ + sdf.format(new Date(beginTime)) + \ + \当前时间内(秒)执行线程数为:[\ + threadCount + \\

+ \请求执行的时间为:[\ + (endTime - beginTime) + \毫秒]\;

logger.info(message); } } }

publicvoidsetOrder(intorder) {

this.order = order; }

publicintgetOrder() {

returnorder; } }

PreProcessPipeline接口说明

1) PreProcessPipeline接口会在允许处理的请求范围内继续向下执行(这句话

的意思会在实践篇讲解)

2) PriorityOrdered接口是一个顺序接口,这样可以指定一个AroundPipeline

的执行顺序

3) 这个类的主要应用场景是权限检查,如某个请求在处理过权限检查之后,则

继续执行;反之,则跳转到另一个指定页面或资源

4) 如果isPermitted()函数返回为true,则不会执行handleProcessInternal()函

数,请求会继续向下执行,最终执行Controller或是渲染页面

5) 如果isPermitted()函数返回为false,则会执行handleProcessInternal()函

数,请求就不会继续向下执行,而是直接处理handleProcessInternal()函数返回的ModelAndView接口,然后终于此次请求 6) 该类的相关功能演示,详见如下代码:

publicclassLoginSecurityextendsAbstractSecurity implementsPreProcessPipeline {

privateintorder;

// set 方法

publicvoidsetOrder(intorder) {

this.order = order; }

publicModelAndViewhandleProcessInternal(HttpServletRequestrequest, HttpServletResponseresponse) throws Exception {

returnnewModelAndView(\ + \); }

publicbooleanisPermitted(HttpServletRequestrequest, HttpServletResponseresponse) throws Exception {

if (match(request)) { returntrue; } else

{

if (CookieUtils.isLogin(request)) { returntrue; } else

{ returnfalse; } } }

publicintgetOrder() {

returnorder; } }

PostProcessPipeline接口说明

1) PostProcessPipeline接口,是在Controller或是页面渲染之前的一个处理类,

可以拦截请求马上要处理的相关资源

2) 此处的应用场景是,如果一个人想到重定向到另一个页面,那么我们可以查

看一下是否在重定向的白名单地址列表里面而防止被“钓鱼”

3) 如果isPermitted()函数返回为true,则不会执行handleProcessInternal()函

数,请求会继续向下执行,最终执行Controller或是渲染页面 4) 如果isPermitted()函数返回为false,则会执行handleProcessInternal()函数,

请求就不会继续向下执行,而是直接处理handleProcessInternal()函数返回的ModelAndView接口,然后终于此次请求

5) isPermitted()函数中的ModelAndView里面包含要跳转或是要处理的资源,

所以可以进行白名单等功能的检验

ExceptionPipeline接口说明

1) 当Controller或是渲染页面的时候发生异常,会调用ExceptionPipeline 2) 使用了exceptionPipeline,我们可以这样处理:

Exception (errorcode = 1) --> /error_1.ftl Exception (errorcode = 2) --> /error_2.ftl

像这样的情况,是我们可以通过一种异常类型,不同的errorcode可以自定义不同的显示页面

3) 在发生异常的时候,就可以通过此接口的ModelAndView接口来定制渲染页

4) 该类的相关功能演示,详见如下代码

publicclassDefaultExceptionHandlerimplementsExceptionPipeline {

private Logger logger = LoggerFactory.getLogger(getClass());

privateintorder;

publicvoidhandleExceptionInternal(HttpServletRequestrequest,

HttpServletResponseresponse, ModelAndViewmv, Throwablethrowable) throws Exception

{

// 打印错误信息

String stackTrace = StackTraceUtil.getStackTrace(throwable); // 记录错误信息

logger.error(stackTrace);

if (mv != null) {

mv.setViewName(\); } else

{

throwable.printStackTrace(); } }

publicvoidsetOrder(intorder) {

this.order = order; }

publicintgetOrder() {

returnorder; } }

FreeMarkerWidget接口说明

1) 在我们渲染一个页面的时候,我们可以使用${widget(\

2) 渲染时候的顺序是:${widget(\

\

3) 如果在渲染的时候,没有\处理类,则直接渲染

\页面

4) 这个函数的好处是,可以为每个页面的嵌套子页面提供独立的业务处理类

Widget,使子页面的逻辑独立

相关配置文件配置

web.xml配置

xmlns=\xmlns:web=%un.com/xml/ns/javaee\

xsi:schemaLocation=\http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\ id=\version=\>

mb-healthcloud

Set Character Encoding

org.springframework.web.filter.CharacterEncodingFilter

encoding UTF-8

Set Character Encoding /*

summercool

org.summercool.web.servlet.DispatcherFilter

summercool /*

index.htm


summercool+ mybatis框架解决方案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:班级小组合作学习实施方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: