Java框架――Structs(一)

2014-11-24 09:39:58 · 作者: · 浏览: 3

Structs是Java三大框架之一,Struts是采用JavaServlet/JavaServer Pages技术,开发Web应用程序的开放源码的Framework。采用Structs开发是基于MVC的应用框架。

首先简单再说一下MVC(Model/View/Controller):
M是指数据模型,在Structs中通常由ActionForm Bean表示,
V是指用户界面,视图通常是由JSP建立的,Structs包含扩展自定义标签库(TagLib),可以简化用户界面的创建过程。目前的标签库包括:Bean Tags 、 HTML tags 、 Logic Tags 、 Nested Tags 以及 Template Tags 等。
C则是控制器,在Structs中实现控制逻辑的是Action,在struts-config.xml配置文件中ActionMapping 与 ActionForward 则指定了不同业务逻辑或流程的运行方向。
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

Structs只能用于Web程序开发,那么它的工作流程是怎么走的呢?在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。所以说Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。

下面做一个登陆页面的小Demo和大家分享:
首先是JSP页面的代码(其中使用了taglib):
[html]
<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>





登陆页面






















用户名:

密码:










接着是ActionServlet代码:

[java]
package com.sinosoft.servlet.action;

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;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.sinosoft.servlet.form.LoginForm;

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm loginForm=(LoginForm)form;
if(loginForm.getUsername().equals("xdp") && loginForm.getPassword().equals("123")){
//登陆成功,将用户信息设置到session中
request.getSession().setAttribute("user", loginForm.getUsername());
//跳转到指定的页面
return mapping.findForward("success");
}else{
//登陆失败,处理
ActionMessages errors=new ActionMessages();
errors.add("loginerror",new ActionMessage("login.error"));
this.addErrors(request, errors);
//获取配置文件中action的input属性,并跳转到这个页面
return mapping.getInputForward();
}
}
}


下面是ActionForm的代码:
[java]
package com.sinosoft.servlet.form;

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;

pub