Struts2进阶

Struts2进阶_第1张图片

1.Struts2实现Action层的不同方式

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, "地址出错");
              }
       }
}

2.Action中对ActionContext和对Servlet API的访问

 实现点击计数

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
        

3.struts.xml中Action的配置

**动态方法调用

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
        

Struts2进阶_第2张图片Struts2进阶_第3张图片Struts2进阶_第4张图片

**文件下载

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"
            
        

Struts2进阶_第5张图片

**商品列表、通配符的使用

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
        

Struts2进阶_第6张图片 

4.struts.xml中result的配置

      
            /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基础学习总结

你可能感兴趣的:(Struts2,Struts2)