1.普通POJO类,该类包含一个无参数的execute()方法,返回值为字符串类型
2.实现Action接口
package com.zhaoyuan.action;
import com.opensymphony.xwork2.Action;
public class UserAction implements Action {
private String userName;
private String address;
private String telephone;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String execute(){
if(userName.length()>6) {
//return "success";
return SUCCESS; //Action字符串常量
}else {
return "error";
}
}
}
3.继承ActionSupport
package com.zhaoyuan.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction2 extends ActionSupport{
private String userName;
private String address;
private String telephone;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
@Override
public void validate() {
if(null==address) {
addFieldError(address, "地址出错");
}
}
}
实现点击计数
1. 配置web.xml
2. Jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
ClickNum
点击按钮,点击了
${empty applicationScope.num?0:applicationScope.num}次
3. action类
package com.zhaoyuan.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ClickNumAction extends ActionSupport{
@Override
public String execute() throws Exception {
// 获取ActionContext对象,通过该对象访问Servlet API
ActionContext ctx = ActionContext.getContext();
// 获取ServletContext里的num属性
Integer num = (Integer) ctx.getApplication().get("num");
if(num==null) {
num=1;
}else {
num++;
}
// 将加1后的num值保存在application中
ctx.getApplication().put("num",num);
return SUCCESS;
}
}
4. struts.xml
/ClickNum.jsp
**动态方法调用
2.3之后的版本要在
**Method属性
**登录验证、退出功能
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
用户登录
ok.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
ok
用户名:${param.username }
当前session中登陆的用户是${session.Curuser}
退出
LoginAction
package com.zhaoyuan.action;
import com.opensymphony.xwork2.ActionSupport;
import java.lang.String;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
public class LoginAction extends ActionSupport implements ServletRequestAware{
private String username;
private String password;
private HttpServletRequest request;
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;
}
@Override
public void validate() {
if(username==null||username.equals("")) {
addFieldError(username, "用户名出错");
System.out.println("用户名不能为空");
}
if(password==null||password.length()<6) {
addFieldError(password, "密码不能小于六位");
System.out.println("密码不能小于六位");
}
}
@Override
public String execute() {
System.out.println("----用户登录");
System.out.println("用户名"+username);
System.out.println("密码"+password);
if(password.length()>6&&username.startsWith("qst")) {
HttpSession session = request.getSession();
session.setAttribute("Curuser",username);
return "ok";
}else {
//return "error";
throw new RuntimeException("出错");
}
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public String logout() {
//获得session
HttpSession session = request.getSession();
//
session.removeAttribute("Curuser");
System.out.println("退出");
return "input";
}
}
Struts.xml
/ok.jsp
/error.jsp
/login.jsp
/login.jsp
**文件下载
1.下载页面
下载文件
2.Action配置
package com.zhaoyuan.action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.lang.String;
public class DownloadFileAction extends ActionSupport {
@Override
public String execute(){
return SUCCESS;
}
public InputStream getInputStream() {
InputStream ins;
//目标文件在webcontent根目录下 ins=ServletActionContext.getServletContext().getResourceAsStream("/download.txt");
return ins;
}
}
3.struts.xml
text/plain
inputStream
attachment;filename="download8.txt"
**商品列表、通配符的使用
productList.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
商品列表
商品ID
商品名称
商品数量
操作
1001
小米手机
128
编辑
删除
1002
佳能相机
800
编辑
删除
1003
华为手机
800
编辑
删除
1004
魅族手机
100
编辑
删除
ProductAction
package com.zhaoyuan.action;
import com.opensymphony.xwork2.ActionSupport;
import java.lang.String;
public class ProductAction extends ActionSupport {
private int productID;
public int getProductID() {
return productID;
}
public void setProductID(int productID) {
this.productID = productID;
}
public String edit() {
System.out.println("编辑商品"+productID);
return "edit";
}
public String del() {
System.out.println("删除商品"+productID);
return "del";
}
}
struts.xml
/edit.jsp
/del.jsp
del,edit
/edit.jsp
/del.jsp
/del.jsp
/edit.jsp
del,edit
/del.jsp
/edit.jsp
del,edit
/error.jsp
/productList.jsp
ClickNum
/
GlobalResultTestAction
package com.zhaoyuan.action;
import com.opensymphony.xwork2.ActionSupport;
import java.lang.String;
public class GlobalResultTestAction extends ActionSupport {
@Override
public String execute() {
System.out.println("gloabalResultTest");
return "testredirectaction";
}
}
Struts2基础学习总结