目录
0、Struts显示数据到JSP
把Model的数据显示在视图JSP上
1、Product.java 用于存放数据
Product.java 用于存放数据
package com.how2java.bean;
public class Product {
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2、ProductAction用于控制
9-10行准备数据
package com.how2java.action;
import com.how2java.bean.Product;
public class ProductAction {
private Product product;
public String show() {
product = new Product();
product.setName("iphone7");
return "show";
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
}
3、在struts.xml中配置跳转
该配置表示 访问路径/showProduct会调用 ProductAction 类的 show 方法
服务端跳转到show.jsp
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="basicstruts" extends="struts-default">
<action name="showProduct" class="com.how2java.action.ProductAction" method="show">
<result name="show">show.jsp</result>
</action>
</package>
</struts>
4、show.jsp
在web目录下创建show.jsp文件
通过EL表达式,取出product的name
注: ${product}会访问对应的Action的 getProduct()方法
注: 严格地说,是Struts通过getProudct()方法返回product对象,然后再把product对象通过request.setAttribute("product", product) 放在"product" 这个key上,这样就方便EL表达式去取出来了
<%@page isELIgnored="false"%>
${product.name}
5、测试
重启tomcat 访问
http://127.0.0.1:8080/struts/showProduct
6、原理图
1. 访问路径 /showProduct
2. 所有访问都被struts的filter所拦截,并进入struts的工作流程
3. 根据配置文件struts.xml, 会执行ProductAction的show方法
4. 在show方法中,将实例属性product指向一个新的对象,并设置名称为iphone7
5. 服务端跳转到show.jsp
6. 在show.jsp中,访问ProductAction.getProduct() 获取实例属性product,并显示其名称iphone7