Struts2中Action-代码抽取

迷南。 2022-06-16 14:43 269阅读 0赞

代码:

  1. 基类:
  2. package com.dx.action;
  3. import java.lang.reflect.ParameterizedType;
  4. import java.util.Map;
  5. import org.apache.struts2.interceptor.ApplicationAware;
  6. import org.apache.struts2.interceptor.RequestAware;
  7. import org.apache.struts2.interceptor.SessionAware;
  8. import com.opensymphony.xwork2.ActionSupport;
  9. import com.opensymphony.xwork2.ModelDriven;
  10. @SuppressWarnings("unchecked")
  11. public class BaseAction<T> extends ActionSupport implements ModelDriven<T>,
  12. RequestAware,SessionAware,ApplicationAware{
  13. private static final long serialVersionUID = 1L;
  14. protected Map<String,Object> req;
  15. protected Map<String,Object> session;
  16. protected Map<String,Object> app;
  17. protected T model;
  18. @Override
  19. public T getModel() {
  20. return model;
  21. }
  22. @SuppressWarnings("rawtypes")
  23. public BaseAction(){
  24. ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
  25. Class clazz = (Class)type.getActualTypeArguments()[0];
  26. try {
  27. model = (T)clazz.newInstance();
  28. }catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. @Override
  33. public void setApplication(Map<String, Object> app) {
  34. this.app = app;
  35. }
  36. @Override
  37. public void setSession(Map<String, Object> session) {
  38. this.session = session;
  39. }
  40. @Override
  41. public void setRequest(Map<String, Object> req) {
  42. this.req = req;
  43. }
  44. }
  45. 子类:
  46. package com.dx.action;
  47. import java.util.List;
  48. import com.dx.pojo.User;
  49. import com.dx.service.UserService;
  50. public class UserAction extends BaseAction<User>{
  51. private static final long serialVersionUID = 1L;
  52. private UserService userService;
  53. public void setUserService(UserService userService) {
  54. this.userService = userService;
  55. }
  56. //添加用户
  57. public String addUser(){
  58. userService.save(model);
  59. return "success";
  60. }
  61. //删除
  62. public String delete(){
  63. int uid = model.getUid();
  64. userService.delete(uid);
  65. List<User> l = userService.queryAll();
  66. req.put("users", l);
  67. return "list";
  68. }
  69. //跳转更新页面
  70. public String update(){
  71. int uid = model.getUid();
  72. User user = userService.fetch(uid);
  73. req.put("user", user);
  74. return "update";
  75. }
  76. //更新用户
  77. public String updateUser(){
  78. userService.update(model);
  79. List<User> l = userService.queryAll();
  80. req.put("users", l);
  81. return "list";
  82. }
  83. //查询所有用户
  84. public String queryUser(){
  85. List<User> l = userService.queryAll();
  86. req.put("users", l);
  87. return "list";
  88. }
  89. //根据姓名查询
  90. public String queryByName(){
  91. String uname = model.getUname();
  92. List<User> l;
  93. if(uname != null && uname.length() != 0){
  94. l = userService.queryByName(uname);
  95. }else{
  96. l = userService.queryAll();
  97. }
  98. req.put("users", l);
  99. return "list";
  100. }
  101. }

spring配置:

  1. <bean id="baseAction" class="com.dx.action.BaseAction" scope="prototype"></bean>
  2. <bean id="userAction" class="com.dx.action.UserAction" scope="prototype" parent="baseAction">
  3. <property name="userService" ref="userService"></property>
  4. </bean>

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Struts2Action

    多数的MVC框架中的Control层,都是一个Java对象。按照惯例,我们通常会把这个层次上面的Java对象统称为Action层。本篇文章,我们就来简单介绍一下Struts2中

    相关 Struts2-Action

    Action类的三种实现方式 1.POJO的实现方式 优点:无耦合 缺点:东西都要自己实现 在Struts2中,Action可以不继承特殊的类或不实现任何特殊的接口,

    相关 Struts2Action的细则

    Action的编写方式 在struts2的应用开发中,Action作为框架的核心类,实现对用户请求的处理,Action被称为业务逻辑控制器。一个Action代表一次请求或