JavaWeb日记——struts2利用不同方式执行删除功能

使用这个之前,你要先懂得

  1. struts2的配置
  2. 基础的el语法
  3. action的分配
  4. 返回值的回调
  5. 一定的ajax和jquery基础

首先你要配置好web.xml,applicationContext-beans.xml,applicationContext.xml,这里不展开说

第一种方法比较简单直接在按钮搞个链接,链接上有id参数

首先配置struts.xml里的action


        
            
            /WEB-INF/views/emp-list.jsp
            
            /emp-list
        

页面的关键部分

Delete

Action部分

public class EmployeeAction extends ActionSupport implements RequestAware{

    private static final long serialVersionUID = 1L;
    //员工增删查改的封装,具体代码可以忽略
    private EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    public String list() {
        request.put("employees", employeeService.getAll());
        return "list";
    }

    private Integer id;
    //自动获取传入id
    public void setId(Integer id) {
        this.id = id;
    }
    public String delete() {
        employeeService.delete(id);
        return "success";
    }

    private Map request;

    @Override
    public void setRequest(Map arg0) {
        this.request = arg0;
    }
}

点击那个链接之后就会直接删除掉那个数据并重定向到所有员工的列表

第二种方法比较高级,用到ajax

因为通常我们删除都需要确定,并不是一点击就删除然后跳转
重新配置struts.xml里的action


        
            
            /WEB-INF/views/emp-list.jsp
            
            
                text/html
                inputStream
               
        

页面主要代码

                
                    
                    
                        Delete
                        
                    
                

要调用的js


Action代码

public class EmployeeAction extends ActionSupport implements RequestAware{

    private EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }
    
    public String list() {
        request.put("employees", employeeService.getAll());
        return "list";
    }

    private Integer id;
    //设置传入id
    public void setId(Integer id) {
        this.id = id;
    }
    //利用输入流传回,通常返回一些标记值(0或1之类的)
    private InputStream inputStream;

    public InputStream getInputStream() {
        return inputStream;
    }

    public String delete() {
        //成功返回1,失败返回0
        try {
            employeeService.delete(id);
            inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
            try {
                inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
        }
        return "ajax-success";
    }
    
    private Map request;

    @Override
    public void setRequest(Map arg0) {
        this.request = arg0;
    }
}

利用ajax的话更符合现实开发的需要,用户要先确定再执行操作,而且不用重定向,移除在当页面的进行,更加节省流量用户体验也更加好

你可能感兴趣的:(JavaWeb日记——struts2利用不同方式执行删除功能)