Java框架(二)——Structs
2012-09-23 11:43
387 查看
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):
接着是ActionServlet代码:
下面是ActionForm的代码:
我们还添加了一个配置文件ApplicationResources.properties,用来存放错误提示信息:
最后一个是struts-config.xml配置信息:
首先简单再说一下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):
<%@ 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"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html lang="true"> <head> <html:base /> <title>登陆页面</title> </head> <body> <center> <font color="red"><html:errors property="loginerror" /></font><br> <form action="login.do" method="post" focus="login"> <table border="0"> <tr> <td>用户名:</td> <td><input name="username" type="text" /></td> <td> <font color="red"><html:errors property="username"/></font> </td> </tr> <tr> <td>密码:</td> <td> <input name="password" type="password" /> </td> <td> <font color="red"><html:errors property="password"/></font> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="提交"/> </td> </tr> </table> </form> </center> </body> </html:html>
接着是ActionServlet代码:
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的代码:
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; public class LoginForm extends ActionForm { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * 验证函数 */ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors=new ActionErrors(); //判断用户名,加入错误信息 if(this.username==null || this.username.trim().equals("")) { errors.add("username", new ActionMessage("username.null")); } //判断密码,加入错误信息 if(this.password==null || this.password.trim().equals("")) { errors.add("password", new ActionMessage("password.null")); } return errors; } }
我们还添加了一个配置文件ApplicationResources.properties,用来存放错误提示信息:
最后一个是struts-config.xml配置信息:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="loginForm" type="com.sinosoft.servlet.form.LoginForm"/> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action path="/login" attribute="loginForm" input="/login.jsp" name="loginForm" scope="request" type="com.sinosoft.servlet.action.LoginAction"> <forward name="success" path="success.jsp"></forward> </action> </action-mappings> <message-resources parameter="com.yourcompany.struts.ApplicationResources"></message-resources> </struts-config>
相关文章推荐
- Java之Structs框架初探
- java主流框架Spring hibernate structs产生
- Java Executors框架的源码理解
- java三大框架之Hibernate的个人学习
- Java Executor并发框架(三)ThreadFactory介绍
- Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
- 几种支持REST的Java框架
- 菜鸟猿大战Java之集合框架系列(二)
- Java 集合框架 泛型
- Java【集合系列】-01-总体框架
- Java RESTful 框架
- java 快速开发框架
- 深入解析Java的Hibernate框架中的一对一关联映射
- Java 集合框架
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- java mina框架使用
- 最好的8个 Java RESTful 框架
- java1.5后的多线程框架
- java三大框架起源
- Java NIO框架之 Mina