手机网站搭建多少钱,网易企业邮箱过期了,株洲网站做的好的公司,wordpress更改图片上传路径Struts2的Action类很有意思#xff0c;你可以使用3种方式来实现具体的Action类#xff1a;
让你的Action类继承自ActionSupport类#xff08;项目中最常用这种方式#xff0c;因为ActionSupport类中定义了很多帮助方法#xff09;让你的Action类实现Action接口使用POJO的…Struts2的Action类很有意思你可以使用3种方式来实现具体的Action类
让你的Action类继承自ActionSupport类项目中最常用这种方式因为ActionSupport类中定义了很多帮助方法让你的Action类实现Action接口使用POJO的方式来实现只要Action类中有一个返回值为String的execute方法就好了这种方式使Action类最容易被测试
以上三种Action的实现方式都可以被struts2框架自动识别如果你在struts.xml里面配置了一个action块但是没有配置action类的路径这样框架默认使用ActionSupport来处理请求。
但是在实际使用struts2的过程中我发现了一个问题一个Action只有一个execute方法来处理一类请求如果我开发的某块功能有100个不同的请求那我岂不是要写100个Action类每个类实现一个execute方法这样虽然满足了一个类一个责任的设计原则但是会不会造成“类爆炸”后来看了struts2的文档才知道其实我们可以使用struts2灵活的通配符配置来达到减少action类的目的
先来看看一个简单的时序图 请求从这个页面发起只是简单的两个链接 !DOCTYPE html
html
head
meta charsetUTF-8
titleInsert title here/title
/head
body
a hrefinfoaddADD INFO/abr
a hrefinfodelDEL INFO/abr
/body
/html 请求的控制转发是在struts.xml里面配置的 strutsconstant namestruts.enable.DynamicMethodInvocation valuetrue /package namemypack extendsstruts-defaultaction nameinfo* classcom.stone.struts2.action.MyFirstAction method{1}result/{1}info.jsp/resultallowed-methodsadd,del/allowed-methods/action/package
/struts
注add,del是 方法名也是jsp名称前缀必须创建addinfor.jsp和delinfo.jsp文件
Component Scope(valueprototype) public class MyFirstAction extends ActionSupport { private Connection conn null; private PreparedStatement pstmt null; private ResultSet rs null; private String username; public String getUsername(){ return username; } public void setUsername(String username){ this.username username; } public String addd() { getUsername(); int num queryCount(); System.out.println(MyFirstActionaddrutsaaaaaaaaaa_______________________________num); ActionContext.getContext().getSession().put(list, 威锋网numusername); return SUCCESS; } public String del() { return SUCCESS; } } 上面这个XML的配置内容有几点需要注意
我开启了struts2的RMIapache struts基于安全性考虑RMI默认是关闭的。大家看到action name的值跟平常有点不一样我使用了星号通配符用来匹配JSP中的两个链接infoadd和infodel, 要配置method{1}, 这样要被调用的method名字就分别是add和del了。result的JSP页面的名字也可以用通配符来配置我分别定义了两个JSPaddinfo.jsp和delinfo.jsp,这样正好一一对应。注意在struts2.5之后基于安全性考虑struts2默认开启了SMI必须显示定义Action中能被请求调用的方法所以我有配置allowed-methods
看看这个Action类 public class MyFirstAction extends ActionSupport {public String add() {return SUCCESS;}public String del() {return SUCCESS;}
}