Struts2学习笔记(二):第一个Struts2应用
一、创建Action类。
创建工程Struts2Demo
struts 2中的Action类并不需要继承struts 2中的某个父类,普遍的java类就可以。
在org.sunny.user.action包中创建名为UserAction的类。
package org.sunny.user.action;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class UserAction {
//与JSP文件中属性名称相对应
private String username ;
private String message ;
//创建属性的setter和getter方法
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute(){
return "success" ;
}
public String sendFeedback(){
StringBuffer msg = new StringBuffer("你好,") ;
msg.append(this.username).append(",消息:'").append(message).append("'已经发送完毕!");
ServletActionContext.getRequest().setAttribute("feedback", msg.toString());
return "success" ;
}
}
二、配置Action类。
在struts.xml中加入如下配置。
<package name="sunny" namespace="/" extends="struts-default">
<action name="user_*" class="org.sunny.user.action.UserAction" method="{1}">
<result name="success">${pageContext.request.contextPath}/WEB-INF/jsp/success.jsp</result>
</action>
</package>
class="org.sunny.user.action.UserAction"对应的就是我们所创建的类。
action中的name属性就是我们访问网页时的路径名称,如果设置为'name="user“',则访问时就为"localhost:8080/Struts2Demo/user.action"。
action中的methos属性设置是访问这个action类时所访问的方法名称,默认是"execute",即,访问action类中的execute()方法。
methos属性这里设置成'{1}'是与前面的name属性的设置相对应,name设置为'user_*',就可以在访问时自己选择访问action的那个方法,如果访问路径为"localhost:8080/Struts2Demo/user_sendFeedback.action",这表明将访问类中的sendFeedback()方法,等同于'method="sendFeedback"'。
action中的result属性设置的为页面跳转的路径,result中的name属性设置的是action类中访问的方法返回的字符串,后面的值${pageContext.request.contextPath}/WEB-INF/jsp/success.jsp就是页面跳转的路径。如,result中name属性设置为'success',如果execute()方法最后return "success",则浏览器将会跳转到WEB-INF/jsp/success.jsp,${pageContext.request.contextPath}表示的是项目的根路径。一个action中可以设置多个result,但是各个result的name属性的值应当不一样。
三、创建JSP文件。
根目录下创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<h1>struts2 demo 首页</h1>
<form action="${pageContext.request.contextPath }/user_sendFeedback.action">
姓名:<input type="text" name="username"><br>
消息:<input type="text" name="message" ><br>
<input type="submit" value="发送">
</form>
</body>
</html>
注:两个文本框中的name属性必须和UserAction中的属性名称一致,否则将不能讲值传入UserAction中的两个属性中,这种传值得原理运用到了java中的反射机制。
WEB-INF/jsp中创建success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<h1>you had send message success!</h1>
<%=request.getAttribute("feedback")%>
</body>
</html>
四、运行效果。


Struts2学习笔记(二):第一个Struts2应用的更多相关文章
- struts2学习笔记二
一.分文件编写框架配置文件 1.不分文件开发可能产生的问题 就类似于我们在写java类时,所有代码都写在一个类里,甚至写在一个方法里. 当3个人都checkout了struts.xml文件时,第一个人 ...
- struts2学习笔记(一)—— struts2介绍及入门程序
一.struts2概述 1.1 什么是struts2? 在介绍Struts2之前,先来认识一下Struts1.Struts1是最早的基于MVC模式的轻量级web框架,他能够合理的划分代码结构,并包含了 ...
- Struts2学习笔记二 配置详解
Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...
- Struts2学习笔记二:开发流程
一:创建项目,添加依赖包 二:在web.xml配置核心控制器 <filter> <filter-name>struts2</filter-name> <fil ...
- Struts2学习笔记(二)——配置详解
1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin. ...
- [struts2学习笔记] 第一节 关于struts2的简单认知
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40298287 官方文档:http://struts.apache.org/releas ...
- struts2学习笔记(三)—— struts2的常见配置
一.配置文件的加载顺序 每次从客户端发送请求到服务器都要先经过Struts2的核心过滤器StrutsPrepareAndExecuteFilter,这个过滤器有两个功能:预处理和执行.在预处理中主要就 ...
- Struts2学习笔记-jsp中引用struts2框架
如果在jsp中需要引用struts2 框架,需在前面加上以下内容 <%@taglib prefix="s" uri="/struts-tags" %> ...
- struts2学习笔记(3)——struts2的局部类型转换
今天又学到了一个新的东西,就是struts2的类型转换. 为什么要类型转换? 今天我就要传一个点的坐标给你,保存时用一个自定义的Point类来保存. 因为在表单里面传过去的是字符串,如“12,23”, ...
随机推荐
- surfaceView和Camera配合进行摄像头的预览
首先是Camera类,在5.0上已经被废弃,不推荐使用但还是支持的.最新的是Camera2类,我还没有研究,据说用法完全不一样,反正也是一个坑跳入另外一个坑. 上面是简介和需要的权限,记得加上权限. ...
- 在ASP.NET将程序中将上传的附件存储到另一台文件服务器上的实现
假定有两台服务器:A和B,其中A为Web服务器(IP:192.123.1.1, 为iis发布程序的服务器 ),B为文件服务器(IP: 192.123.2.2) 在文件服务器B中某个磁盘下创建一个共享文 ...
- Volley框架使用(POST)
需要在MyApplication(继承Application)中配置; public static RequestQueue requestQueue; @Override public void o ...
- mysql复习增删改查
select * from torder where status='退款申请' UPDATE torder SET `status`='退款申请' WHERE status='等待付款' and i ...
- Java枚举类型理解
Enum格式理解 Enum的格式可以看做跟class关键字一样 class的定义格式如下: public class abc{ } enum的定义格式如下: Public enum abc { } 引 ...
- Swift - 07 - 布尔类型
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- (转)xcode报Could not find a storyboard named...错误的解决办法
首先确定是否有用到storyboard 如果没有用到的话,需要将涉及到storyboard的地方修改: 1 删除plist文件里的设置 2 修改程序中使用到storyboard的地方 如果确实有使用s ...
- mysql for linux 数据库的安装过程
mysql for linux 数据库的安装过程 l 安装版本:mysql-advanced-5.6.12-linux-glibc2.5-x86_64.tar.gz ,此版本是绿色版本,只需要将其解 ...
- 深入浅出理解QTimeLine类
网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下. 因为我最近需要有动画方面配合时间间隔触发QGraphics ...
- 关于一个注册邮箱的demo
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...