在struts2中,控制器使用servlet或filter。
在struts.xml中,加入这一行进入开发模式,对struts.xm中的修改进行热处理,而不再需要重启服务器。
<constant name=“struts.devMode“ value=”true“/>
MyEclipse提供链接javadoc的功能。对一个jar包这样添加完之后,选择类按F1会出现这个类的API文档。
struts 2 的访问机制。这个机制其实很简单,struts2的作用就是为了让请求和显示分离。当用户在客户端输入地址的时候,客户端将地址发送到服务器,假设是tomcat。那么tomcat接收到这个请求之后,首先在服务器中的webapp中寻找,看是访问那个web程序。确定之后,首先查看该程序的web.xml文件。
如果这时候你的struts2配置好了的话,在web.xml中肯定有一个struts2的过滤器。通过这个过滤器,服务器就知道任何一个请求都必须要经过struts过滤。这个过滤过程就包括任何请求都必须去参考struts.xml文件中的配置。这个配置文件中,首先找package name。这个其实就是servlet path,通过这个path来判断这个请求是处于哪个包下的。然后去匹配这个package name下面的action,如果符合,就会调用这个action中的result,一般是一个JSP文件,也就是显示的页面。要注意package name和namespace是不同的。后者在输入地址的时候,就必须在action前加入,但前者只是为了将action分包。
namespace的匹配规则:当有准确对应的namespace的时候,就直接对应改package下的action。如果没有,则去namespace=“”的package下对应。如果都没有,则报错。
那为什么我们不直接在输入地址的之后访问这个JSP呢,这样不是简单很多么,但是你要知道,当我们使用这种复杂的模式之后,我们可以随时修改这个result指向不同的JSP,而用户则不需要重新去记忆一个新的地址。这样就提供了一种大大的灵活性。
要注意一点,在struts2中,各种相对路径其实并不靠谱,所以简单来说,建议不要使用相对路径,而全部使用绝对路径。比较智能的是,MyEclipse创建JSP的时候提供了basepath的语句。所以只要在此基础上,直接写webapp内的绝对路径即可。
DMI,动态配置方法。就是可以在url地址中指定方法而不是在struts.xml中配置一个新的action。因为相比之下,不用DMI会增加很多action。比如一个对用户进行操作,使用DMI,你可以只用设定一个action叫做user。然后定义一个class,里面包含了add、del、update等方法。然后要进行什么操作,比如添加,就直接user!add即可。
不这么做的话,你就起码要申请三个action。然后每个action都指定一个类,并且指定类中的方法。这样会比较麻烦。