struts2系列学习笔记(2)---------------从HelloWorld开始
来源:互联网 发布:mac类似sai的软件 编辑:程序博客网 时间:2024/05/22 04:49
本案例只用到最核心的Struts2框架内容,一个至简的HelloWorld程序.
用户在第一个页面中可以输入:姓名 点击[Login]按钮.即可在第二个页面中显示出 Hello xxx(用户输入的姓名)
基于Struts2的实现需要
1. 编写3个程序:
视图: InputName.jsp (第一个页面)
HelloName.jsp(第二个页面)
控制器: action.LoginAction.java
2. 配置struts.xml文件
======================================
具体程序内容:
************************* InputName.jsp ****************************
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>InputName page</title>
</head>
<body>
<s:form action="loginAction">
Name:<s:textfield name="inputName"></s:textfield>
<s:submit name="submit" value="Login"></s:submit>
</s:form>
</body>
</html>
这是一个JSP文件,使用框架与普通的JSP/Servlet技术下的区别就是使用了Struts2提供的标记
<%@taglib uri="/struts-tags" prefix="s"%> :该标记用于引入Struts2标记库,前缀通常定义为s.
本页面中使用的了3个form相关的标记:
1. <s:form action="loginAction">
该标签用于生成HTML的<form>标签
action属性: 不是必需的,默认值为当前的action,类型为String. 说明:指定提交到的action的名字,不要添加.action的后缀
本例中action的值:loginAction 与struts.xml配置文件中action标记的name属性值loginAction一致
2. <s:textfield name="inputName"></s:textfield>
该标签用于生成HTML的<input type="text">标签
name属性:该属性是Struts2标签库的通用属性,类型为String.说明:指定表单元素的name映射,该属性的值与action的属性对应
3. <s:submit name="submit" value="Login"></s:submit>
该标签用于生成HTML的<input type="submit">标签,<input type="image">标签,<button type="submit">标签
name属性:同上
value属性:该属性是Struts2标签库的通用属性,类型为String.说明:指定HTML表氮元素的value属性
type属性:该属性不是必需的,本例中未指定该属性即使用默认值input,类型为String,说明:要使用的提交按钮的类型,有效值为:input,image,button
************************* HelloName.jsp ****************************
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Hello ${requestScope.name} !
</body>
</html>
本页面用于显示前页面输入的姓名,为了简单起见使用了EL,当然本例随着Struts2的不断学习还可以改用OGNL.此处暂不做说明.
************************* action.LoginAction.java ****************************
package action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction {
private String inputName;
public String getInputName() {
return inputName;
}
public void setInputName(String inputName) {
this.inputName = inputName;
}
public String execute(){
Map map = (Map)(ActionContext.getContext().get("request"));
map.put("name",inputName);
return "success";
}
}
Struts2的核心功能是Action,对于开发人员来说使用本框架的主要任务即为开发Action.该类可以是一个普通的java类,但是该必须至少提供一个方法,该方法的签名形如:public String execute().本例中提供的方法为:public String execute(),即当程序执行到Action类时执行该execute方法.该方法的返回值对应struts.xml配置文件中的 <result>标签的name属性值.该类中提供的属性对应于提交到该Action的前一个页面的标单组件的name属性值.
==================struts.xml====================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="loginAction" class="action.LoginAction">
<result name="success">/HelloName.jsp</result>
</action>
</package>
</struts>
<package>标签为Struts2提供的包类似于Java中包的概念 name属性是必须的,是被其他包引用时的键;extends属性不是必须的,用于指定要扩展的包,本例中的属性值struts-default是struts-default.xml文件中定义的抽象包.(推荐做法)
<action>标签是框架中最基本的单元,用于每一个Action类的映射配置,该标签嵌套在 <package>标签内部.name属性是必须的,是action的名字(自定义),用于匹配请求的URI;class属性不是必须的,用于指定Action类的完整包名和类名
<result>标签用于配置结果映射,该标签的name属性值用于指定result的逻辑名,而实际的结果映射路径写在该标签的开始和结束标签之间.
- struts2系列学习笔记(2)---------------从HelloWorld开始
- Struts2 从HelloWorld开始
- cocos2dx游戏开发学习笔记2-从helloworld开始
- Objective-C 学习笔记:从HelloWorld开始
- 学习Scala:从HelloWorld开始
- 学习Scala:从HelloWorld开始
- spring boot系列教程2--从helloworld开始
- 学Struts2从HelloWorld示例开始
- 坚持学习WF(1):从HelloWorld开始
- linux编程学习4-从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- 学习SpringMVC——从HelloWorld开始
- pdf.js源码学习从helloworld开始
- Nutch中文支持bug
- __asm__ __volatile__内嵌汇编用法简述
- 迫不得已赚积分,发一篇日记!!!
- VC++学习笔记(13)——设置控件的TabOrder
- 好好学习!
- struts2系列学习笔记(2)---------------从HelloWorld开始
- 如何启动和关闭oracle
- C/C++ GNU Scientific Library(GSL) for Windows
- 对SEO的初步概念
- C语言版贪食蛇游戏源代码(我自己写的)
- struts2系列学习笔记(1)---------------Struts2.2.1项目环境手动构建
- struts2系列学习笔记(3)---------------理解Struts2的核心流程
- 开始接触web service
- 学完C寒假在家应该干什么?