Struts是Apache基金组织中Jakarta项目组的一个开源项目。主要实现MVC设计模式,其操作本质仍然是JSP、Servlet、JavaBean等技术应用。
在struts中一共提供了4种标签。
NO | 标签库 | 描述 |
1 | Bean标签 | 管理JSP页面中的Bean操作 |
2 | Logic标签 | 完成各种逻辑控制操作 |
3 | Html标签 | 显示标签,主要是生成HTML标记 |
4 | TILES标签 | 使用动态模板构造显示页面 |
5 | NESTED | 使用潜逃标签进行复杂的页面显示 |
下面是MVC与Struts中各个组件的对应关系。MVC是标准,Struts是实现,实现了此接口。
NO | 组成部分 | 传统MVC | Struts |
1 | 试图(view) | JSP(可加入JSTL减少页面代码) | 在传统页面中提供了标签库的支持 |
2 | 控制器(Controller) | Servlet | Action |
3 | 模型(Model) | JavaBean | ActionForm JavaBean |
配置完之后我就就需要在WEB-INF文件夹中简历struts-config.xml的核心文件。内容如下:
然后配置web.xml文件
此处实际上配置的是一个ActionServlet,此映射路径是*.do;在Struts中配置的*.do的映射已经是一个注明的标志,一般当看到提交路径是以此种形式表示的基本上都属于Struts开发的项目。
接着配置web.xml文件,增加标签库配置
其一共提供了5大类标签库,即bean, logic, html, nested ,tiles后面两个很少用。
这就是它的基本配置。
下面看以第一个Struts程序
首先建立页面,引入tablib标签库。
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://edu.com.struts/html"%>
<%@ taglib uri="http://edu.com.struts/bean"%>
<%@ taglib uri="http://edu.com.struts/logic"%>
//使用属性判断request内是否存在msg属性
${msg}
输入信息:
上边也可以使用普通的HTML标签。下面在hello.jsp页面中输出所有的错误信息,所有信息由ActionForm和Action进行设置。
更需要注意的是表单提交的路径是hello.do,这个路径需要在struts-config.xml文件中进行配置。
建立ActionForm--------HelloFrom.java
package cn.edu.fzy.struts;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.mvel2.util.ThisLiteral;
public class HelloForm extends ActionForm {
private String info;
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors=new ActionErrors();
if (this.info==null||"".equals(this.info)) {
errors.add("info",new ActionMessage("error.info"));
}
return errors;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
然后我们定义Action---------HelloAction.java
package cn.edu.fzy.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class HelloAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
HelloForm helloForm=(HelloForm) form;
String info=helloForm.getInfo();
request.setAttribute("msg", info);
return mapping.findForward("show");
}
}