当服务器一启动,便初始化struts2过滤器的init方法,依次读取default.properties、struts-default.xml等,将其内容加载进内存。
当tomcat调用了struts2过滤器的doFilter方法时,struts2会提取请求的URL。然后它判断servletcontext的名字后面有没有内容,没有内容将根据web.xml的欢迎页面的配置查找是否存在相应的欢迎页面。找到的话,将欢迎页面相对路径追加到当前URL中。
struts2继续根据已配置的URL后缀名来判断当前URL的后缀名。如果配置的后缀名为空,那么将不会再匹配后缀名,直接判断namespace。如果配置的后缀名不为空,那么将依次匹配,匹配不到则调用chain.doFilter来放行当前请求。匹配到了再根据前缀匹配namespace。匹配到了则判断当前struts2的配置中是否配置了动态方法调用。如果开启了动态方法调用,struts2将根据叹号前面的字符串去精确匹配相应的action。没有开启的话,则首先精确匹配再模糊匹配。
当匹配到了相应的action后,就创建action对象,调用叹号后面的方法或method中配置的方法。将方法返回结果与result配置的name匹配,匹配到了再根据type执行的回转方式来响应。
struts2的执行过程
· 2019-12-15
评论