框架处理请求流程
1.浏览器:发送请求
2.服务器:拦截器筛选请求
3.服务器:调用action处理请求
4.服务器:action业务处理导向相应页面
5.服务器:—响应请求
实例:页面登陆
项目文件结构
一、浏览器发送请求
<form action="login" method="post">
用户:<input type="text" name=user><br>
密码:<input type="password" name=password><br>
<input type="submit" value="登陆">
</form>
action=“提交给服务器相应处理的Action类,该类必须在struts.xml中配置”
二、服务器拦截请求
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!-- 通过struts2的jar包中的StrutsPrepareAndExecuteFilter启动拦截器-->
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<!-- 配置拦截器拦截所有请求 -->
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、调用action类
1.struts.xml注册action类,让服务器知道提交的action的具体,并且根据action类返回的结果进行处理
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 包配置,这里采用默认配置 -->
<package name="default" namespace="/" extends="struts-default">
<!-- action类的配置,让struts2知道action的存在 :name地址映射,页面发送请求调用action的类名,class:对应的实现类-->
<action name="login" class="Action.login">
<!-- action类处理完成后返回的结果result,根据result导向页面 -->
<result name="success">/succes.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
2.实现action类
package Action;
import com.opensymphony.xwork2.ActionSupport;
//这里继承了ActionSupport的方法,使用Struts2提供的Action接口
public class login extends ActionSupport{
private static final long serialVersionUID = 1L;
//Action为对象属性驱动,浏览器传来的参数传递给对应的包含set方法的属性,所以需要定义并实现get,set同名参数
private String user;
private String password;
public String getUser() {return user;}
public void setUser(String user) {this.user = user;}
public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
//重写execute方法,该方法返回字符串类型既返回result结果到struts.xml中
public String execute()throws Exception {
String ret = ERROR;
//可以连接数据库验证,调用DAO层数据库的验证方法返回相应的值作为判断依据
if(user.equals("doge")&&password.equals("123456")){
ret=SUCCESS;
return ret;
}else{
return ret;
}
}
}
备注
1.有时候stuts2启动不成功报错Unable to locate configuration files,可能是导入lib的jar包版本太旧,应该使用最新的官网提供的jar包