从零打造在线网盘系统之STRUTS2框架核心功能全解析

 欢迎浏览

数据转换 示例源码下载

WEB系统都是基于网页形式的,接收到的信息都是字符串,Java又是强类型的语言,所以必须需要一个转换的过程.而Struts2的类型转换是基于OGNL表达式的,只需要将表单中的name属性根据OGNL规则命名就能转换成相应的Java类型,通常情况下哦我们无需建立自己的类型转换器,Struts2的内建转换器完全能帮助我们完成任务

例如我们有下面一个需求(包含Integer,Date,数组的转换)

我们该怎么办呢?不不不~~~~我们什么都不用做正常编写Action就行了,Struts2会自动帮我们进行转换

public class RegisterAction extends ActionSupport implements ModelDriven<User> {      private User user = new User();      @Override     public User getModel() {         return user;     }     @Override     @Action(value = "register", results = {             @Result(name = SUCCESS, location = "/success.jsp")     })     public String execute() throws Exception {         System.out.println(user.toString());         return SUCCESS;     } } 

好吧,真的没什么挑战力,下面我们要自己实现转换器了

例如:我们需要将字符串"自行车,1033,100"转换为Java的Product对象

自定义转换器

public class StringToProductTypeConverter extends DefaultTypeConverter {          @Override     public Object convertValue(Map context, Object value, Class toType) {         if (toType == Product.class) {             String[] params = (String[]) value;             Product product = new Product();             String[] productValues = params[0].split(",");             product.setProductName(productValues[0].trim());             product.setPrice(Float.parseFloat(productValues[1].trim()));             product.setCount(Integer.parseInt(productValues[2].trim()));             return product;         } else if (toType == String.class) {             Product product = (Product) value;             return product.toString();         }         return null;     }  }

配置全局转换器(在WEB-INF\classes目录新建xwork-conversion.properties)

com.jimisun.action.Product=com.jimisun.action.StringToProductTypeConverter

在Action中接收(不要使用模型驱动方式接收参数,接收不到)

public class ProductAction extends ActionSupport {      private Product product;      public Product getProduct() {         return product;     }      public void setProduct(Product product) {         this.product = product;     }      @Override     @Action(value = "register", results = {             @Result(name = SUCCESS, location = "/success.jsp")     })     public String execute() throws Exception {         System.out.println(product.toString());         return SUCCESS;     } }

响应数据 示例源码下载

我们一直都没有探讨一个问题,那就是Struts2的结果的响应.对于任何一个程序而言,最重要的莫过于输入和输出,当我们了解了Struts2接收参数后,现在我们一起来看一看Struts2如何响应参数吧

  • Servlet API存取值
  • 属性值存取值
  • 值栈Set方法存取值
  • 值栈Push方法存取值

Servlet API存取值

    ActionContext context = ActionContext.getContext();     HttpServletRequest request  = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);     request.setAttribute("requestValue","requestValue");

                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信