Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet.
struts_filter
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
struts_filter
*.action
这个配置是和配置servlet是一样的意思,就是当url中有满足.action的格式时,自动转到
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter这个类中去处理,
而这个类就在上面拷贝进去的jar文件中. struts_filter时自己定义,不要重名即可
/Result_Example.jsp
主要是action这个节点,当发现为Example时,会调用my下的ExampleAction类去处理
然后result是绑定“success”到Result_Example.jsp
package my;
import com.opensymphony.xwork2.ActionSupport;
public class ExampleAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception
{
// TODO Auto-generated method stub
name="zhiduanqiangchang";
phone="18357302156";
return "success";
}
int id;
String name;
String phone;
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;
}
public String getPhone()
{
return phone;
}
public void setPhone(String phone)
{
this.phone = phone;
}
}
最关键的是该类继承了ActionSupport类,然后重载了execute方法
然后自定义了三个属性,id, name, phone
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
Insert title here
ID:
姓名:
手机号:
其中<%@ taglib prefix="s" uri="/struts-tags" %> 是导入struts2 标签库 加了这个后就可以 使用 struts2标签了
所有 s:开头的标签都会被struts2框架解析
结果如图所示:
好,至此一个Struts2的基本框架已经搭建完毕,让我们捋一捋是Struts2是如何实现的
1.首先,当我们访问http://localhost:8080/Struts2Pro/Example.action?id=111111该地址时,发送请求给tomcat服务器
2.但是先被web.xml中定义的Filter拦截了下来,因为url中有.action这样的格式,
3.然后调用了org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter这个类去处理请求,这个类是struts内部实现的
4.然后StrutsPrepareAndExecuteFilter类去寻找struts.xml文件并加载其中的参数,并构建了一个
5.发现url中存在Example,然后运用映射表,调用ExampleAction去处理
6.然后运用反射技术,构造my.ExampleAction,并调用其中的重载函数execute
7.execute执行完,给id,name,phone属性赋值,返回success
8.然后根据result映射表
8.解析jsp代码,替换里面的标签为响应的值,将处理后的Result_Example.jsp页面内容返回给浏览器
上例中有s:propety,其实struts中还有很多标签,比如s:if
把Example.jsp改成
ID:
姓名:
手机号:
id大于100
id小于100