动态方法调用(DMI):
动态方法调用(DMI): dynamic_method_invocation。 功能:在一个Action中处理多个功能,从而减少系统Action的数量。 DMI 开发过程: a Action extends ActionSupport。 b Action提供多个方法完成不同的功能方法的签名(修饰符,返回值,参数表) 和execute方法一致,方法名字可以随意书写。 c struts.xml 配置文件。
DMI 开发第一种方式(不推荐):在struts.xml中的action标签中添加method属性。 /day3/ok.jsp
DMI 开发第二种方式:在struts.xml中的action标签中使用通配符。 /day3/ok.jsp DMI 开发第三种方式:在jsp页面中使用!的形式发出请求。

 

添加用户 添加用户 user为请求名,add为动态调用action中的方法名,注意:请求后缀要写在最后。

标签、自定义结果类型、json结果类型
1.Struts2结果类型内置(可以参考struts-default.xml): 2.自定义结果类型 a类 implmenets Result实现execute()方法; b配置struts.xml: 3.Json的Result响应类型的使用 a. 引入struts2-json-plugin.jar b. struts.xml配置 d. 如果action中的属性不需要返回: 可以在get方法前使用@JSON(serialize=false)注解。

 

7、struts.xml中其他的配置:
1.全局的异常配置: 2.局部(action中)的异常配置: /loginOk.jsp /loginError.jsp

3. 全局的result配置: /message.jsp 4.常量配置(参考struts2.core.jar中的struts-default.xml文件编写): 同时这些文件也可以写在struts.properties文件中,放到src下: A. B. C. D. E. F. G. H.
8、Struts2的中文乱码解决:
中文乱码问题一般是指当请求参数有中文时,无法在Action中得到正确的中文。Struts2中有2种办法可以解决这个问题: 1、设置JSP页面的pageEncoding=”utf-8”,就不会出现中文乱码; 2、如果JSP页面的pageEncoding=”GBK”,那么需要修改struts.i18n.encoding=GBK,在struts.xml中加入如下语句进行修改。
……
上面2种方法可以解决POST请求中的中文参数,但是GET请求中的中文参数不能解决,
 
GET请求中的中文参数的乱码需要通过修改Tomcat的server.xml文件来解决,修改如下内容,加入URIEncoding=”GBK”:

如果还没有把乱码问题解决,还可以加一个过滤器(Filter)在doFilter()方法中写如下代码: HttpServletRequest request = (HttpServletRequest)arg0; HttpServletResponse response = (HttpServletResponse)arg1; request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); arg2.doFilter(arg0, arg1); 然后,注意要在web.xml最上端配置这个过滤器。