Java 框架之 Struts2
说明
Struts2 是基于MVC的WEB框架。Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
创建Struts项目
在eclipse中创建Web动态项目struts
在eclipse中新建项目struts,使用dynamic web project的方式。
导入相关jar包
下载 lib.rar,解压后复制到WEB-INF/lib里
新建web.xml
在WEB-INF目录下新建web.xml
其中配置了一个 Filter, 所有的请求都被过滤给了这个 Filterorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
配置struts.xml
在src目录下创建一个struts.xml文件
这是最简单的struts.xml配置
其效果是当访问index路径的时候,服务端跳转到index.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="index">
<result>index.jsp</result>
</action>
</package>
</struts>
创建index.jsp
在web目录
下创建index.jsp,
其内容很简单 就是一句
Hello Struts2 World
部署在tomcat中,重启测试
部署在Tomcat中,重启tomcat,然后访问地址,观察效果
http://127.0.0.1:8080/struts/index
相当于实现了servlet的服务端跳转到index.jsp的功能
原理
- 所有的访问都会被web.xml中配置的Struts 的 Filter所拦截
- 拦截之后,就进入struts的工作流程
- 访问的地址是/index,根据struts按照 struts.xml中的配置,服务端跳转到index.jsp
- 显示index.jsp的内容
Struts显示数据
Product.java 用于存放数据
Model层使用一个简单的Product用于存放数据
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;
}
}
ProductAction用于控制
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;
}
}
在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>
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}
测试
重启tomcat 访问
http://127.0.0.1:8080/struts/showProduct
小结
- 访问路径 /showProduct
- 所有访问都被struts的filter所拦截,并进入struts的工作流程
- 根据配置文件struts.xml, 会执行ProductAction的show方法
- 在show方法中,将实例属性product指向一个新的对象,并设置名称为iphone7
- 服务端跳转到show.jsp
- 在show.jsp中,访问ProductAction.getProduct() 获取实例属性product,并显示其名称iphone7
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)