java web进阶篇(九) Struts基础开发
来源:互联网 发布:软件测试研究 编辑:程序博客网 时间:2024/04/30 14:49
Struts是Apache基金组织中Jakarta项目组的一个开源项目。主要实现MVC设计模式,其操作本质仍然是JSP、Servlet、JavaBean等技术应用。
在struts中一共提供了4种标签。
NO标签库描述1Bean标签管理JSP页面中的Bean操作2Logic标签完成各种逻辑控制操作3Html标签显示标签,主要是生成HTML标记4TILES标签使用动态模板构造显示页面5NESTED使用潜逃标签进行复杂的页面显示下面是MVC与Struts中各个组件的对应关系。MVC是标准,Struts是实现,实现了此接口。
NO组成部分传统MVCStruts1试图(view)JSP(可加入JSTL减少页面代码)在传统页面中提供了标签库的支持2控制器(Controller)ServletAction3模型(Model)JavaBeanActionForm JavaBean首先看配置Struts开发环境。最新的可以从http://jakarta.apache.org/下载。将下载下的压缩包解压,将lib文件夹下的全部jar包复制到工程的lib目录下,或者tomcat的lib目录下。
配置完之后我就就需要在WEB-INF文件夹中简历struts-config.xml的核心文件。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.3
//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans></form-beans> //用于配置ActionForm
<global-exceptions></global-exceptions>//用于配置全局异常
<global-forwards></global-forwards>//用于配置全局跳转
<action-mappings></action-mappings>//用于配置Action
<message-resources parameter="cn.edu.fzy.struts.ApplicationResources"></message-resources>//用于配置资源文件路径,资源文件保存在文件夹WEB-INF\classes文件夹中,通过parameter属性指定路径及文件名称,文件名称后缀是properties。
</struts-config>
然后配置web.xml文件
此处实际上配置的是一个ActionServlet,此映射路径是*.do;在Struts中配置的*.do的映射已经是一个注明的标志,一般当看到提交路径是以此种形式表示的基本上都属于Struts开发的项目。
<servlet><servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
接着配置web.xml文件,增加标签库配置
<jsp-config>
<taglib>
<taglib-uri>http://edu.com.struts/bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://edu.com.struts/logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://edu.com.struts/html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
</jsp-config>
其一共提供了5大类标签库,即bean, logic, html, nested ,tiles后面两个很少用。
这就是它的基本配置。
下面看以第一个Struts程序
首先建立页面,引入tablib标签库。
<pre code_snippet_id="419333" snippet_file_name="blog_20140706_1_1272478" name="code" class="html"><%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="<span style="font-size: 18px; ">http://edu.com.struts/html</span>"%>
<pre name="code" class="html" style="font-size: 18px; "><%@ taglib uri="<span style="font-size: 18px; ">http://edu.com.struts/bean</span>"%>
<%@ taglib uri="<span style="font-size: 18px; ">http://edu.com.struts/logic</span>"%>
<html:html lang="true">
<body>
<span style="white-space:pre"></span><html:errors/>
<span style="white-space:pre"></span><logic:present name="msg"scope="request">//使用<logic:present>属性判断request内是否存在msg属性
<span style="white-space:pre"></span>${msg}
<span style="white-space:pre"></span></logic:present>
<span style="white-space:pre"></span><html: form action="/Demo/hello.do" method="post">
<span style="white-space:pre"></span>输入信息:<html:text property="info"></html:text>
<span style="white-space:pre"></span><html:submit value="显示"></html:submit>
<span style="white-space:pre"></span></html:form>
</body>
</html:html>
上边也可以使用普通的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;@Overridepublic ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {// TODO Auto-generated method stubActionErrors errors=new ActionErrors();if (this.info==null||"".equals(this.info)) {errors.add("info",new ActionMessage("error.info"));}return errors;}@Overridepublic void reset(ActionMapping mapping, HttpServletRequest request) {}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}}
HelloForm类的主要功能是用于验证,继承ActionForm类,类中定义的info属性与表单提交的参数一致,并设置了setter和getter操作,
然后我们定义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 {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {// TODO Auto-generated method stubHelloForm helloForm=(HelloForm) form;String info=helloForm.getInfo();request.setAttribute("msg", info);return mapping.findForward("show");}}
</struts-config>接着我们必须配置struts-config.xml
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.3
//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="hellForm" type="cn.edu.fay.struts.HelloForm"></form-bean>
</form-beans>
<global-exceptions></global-exceptions>
<global-forwards></global-forwards>
<action-mappings>
<action attribute="helloForm" input="/hello.jsp" name="helloForm"
path="/bootstrap1/hello" scope="request" type="cn.edu.fzy.struts.HelloAction">
<forward name="show" path="/bootstrap1/hello.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="cn.edu.fzy.struts.ApplicationResources"></message-resources>
- java web进阶篇(九) Struts基础开发
- java web学习(进阶篇)九 Spring MVC
- JSP基础(九)——Java Web的两种开发模式
- 名师讲坛—Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)
- java web进阶篇
- Java基础之(九)-----Java中的IO流(一)【进阶必备】
- Java web开发基础
- java web 进阶篇(二)过滤器
- java web进阶篇(八) Ajax(阿贾克斯)开发技术
- Portal-Basic Java Web 应用开发框架:应用篇(九) —— 多入口 Action
- Java杂谈(九)--Struts
- Java Web 开发实战经典 基础篇(1)
- Java WEB开发须知知识点---基础篇
- Java WEB开发须知知识点---基础篇
- Java Web开发实战经典(基础篇)
- Java Web开发基础(1)-Servlet
- Java Web开发基础(2)-JSP
- Java Web开发基础(3)-JSTL
- Android NDK开发入门篇
- 解决Chrome代理proxy switchy无法使用方法
- STL容器 vector,list,deque 性能比较
- Selenium Python 致友自动登陆
- delphi中@ 什么意思
- java web进阶篇(九) Struts基础开发
- 多点触摸和手势检测
- Android的账号与同步机制
- boost.serialization中基类指针容器存子类对象的序列化
- MFC 获取当前对话框生成的对象指针
- 基于VSFTP的本地YUM源及光盘YUM源搭建
- [LeetCode]—Roman to Integer 罗马数字转阿拉伯数字
- Xcode使用心得01:断点中断问题和调整编译目标
- play framework1生成eclipse项目以及在eclipse中调试