2015年12月17日星期四

windows7的keyboard layout

win7安装在esx上,通过vsphere去连接,结果怎么修改都是英文键盘。通过remote desktop连接也是英文键盘。

修改了驱动为日文键盘也没用。
增加"IgnoreRemoteKeyboardLayout"=dword:00000001也没用

 
后来发现,必须先在vsphere里面login,然后里面是session的keybard是日文后,再remote desktiop进同样的session去就是日文的。
如果用remote desktop直接login,就是英文了。

记下来,免得下次折腾。

2015年12月14日星期一

url-pattern

虽然一直用,因为基本不会遇到问题。
这里弄清楚一下

对tomcat,有4种
/*  wildcardWrappers

*. extensionWrappers

/ defaultWrapper

其他 exactWrappers

优先级是
1.精确匹配最优先,exactWrappers
2.前缀匹配,wildcardWrappers /*
3.扩展名匹配,extensionWrappers *.
4.显示welcome
5.使用默认的servlet来处理,defaultWrapper  /

到这里,就能区分开/*和/的区别了

例子,springmvc里,定义了/*来处理所有的请求给springmvc的DispatcherServlet,也定义了一个@RequestMapping为index.jsp,web目录里面也放一个index.jsp
如果输入http://xxxx/index.jsp,那么请求会被/*给拦截给springmvc,因为rule2比rule3优先。

如果springmvc的servlet里定义的是/, index.jsp就不会被拦截给springmvc,因为rule3比rule5高。

同时,我们还可能会碰到这样的问题
springmvc里面定义/*拦截,然后@RequestMapping定义为index,做一个viewResolver,指向WEB-INF/views/login.jsp。这个时候,如果访问index,会出现什么结果?
a。index会被springmvc拦截,然后去访问 WEB-INF/views/login.jsp
b。 结果WEB-INF/views/login.jsp又被springmvc再次拦截了(rule2比rule3优先级高)
结果导致出现
No mapping found for HTTP request with URI [/xiu_template/WEB-INF/views/login.jsp] in DispatcherServlet with name 'spring.mvc'
出来不了我们想要的东西。

解决法子,最简单的自然是定义springmvc为比如url-pattern *.html,然后访问index.html,然后去WEB-INF/views/login.jsp,然后去的*.jsp的servlet。是没有问题的。

如果就是不想用扩展名的的方法咋办?? url-pattern是没有exclude的。
其实,只要在web.xml里面多顶一个前缀匹配就ok了。default的名字,是固定的。tomcat还可以写为jsp,因为真正的名字是jsp(可以通过serveletcontext找到getServletRegistrations后知道里面注册的servelet是org.apache.jasper.servlet.JspServlet,名字是jsp)。

    <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>/WEB-INF/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

追到这里,就不由想到难道springmvc就不能处理jsp或者static的东西了?查了一下,发现早就有一个
<mvc:default-servlet-handler/>来对应这个事情,定义了这个,拦截了后不能mapping的就给这个default了。
这下才算是完满了。 web.xml里面清爽了。
 default-servlet-handler自动发现server(tomcat)的默认serlet,交个它来出来自己搞不定的事情。

那是不是说定义了这个东西,事情就算完了?我发现如果网站在default-servlet-handler和spring-security搭配起容易出问题。