JavaWeb编程实战宝典(5)___ 第5章 编写Struts2第一个程序

第5章 编写Struts2第一个程序

5.1 Struts2的MVC模式

Struts2中 的控制器主要有如下4个功能

  • 简单验证
  • 复制验证
  • 商业逻辑
  • 流控制
    Struts2框架结构可分为以下4部分
  • JSP/Struts2标签(视图层 V层 )
  • ActionSupport的子类(控制层 C层 )
  • 处理业务逻辑和数据逻辑的JavaBean(模型层 M层 )
  • 用于保存Struts2配置的struts.xml文件

5.2 Struts2的结构体系

5.2.1 工作流程

工作流程 如下图


工作流程图

5.2.2 配置文件

一般将struts.xml放在src根目录
实例代码



    
    
        
        
            
            /first.jsp
        
    


5.2.3 控制器

Struts2只有包含一个execute方法就可以,实例代码

    public class RegisterAction{
        private Sting username;
        private String password;
        private String emai;
        ...省略setter和getter方法
        public String execute() throws Exception{
            //操作逻辑
        }
    }

5.3 Struts2实例,图书查询系统

  • 1.导包


    所需的包
  • 2.配置web.xml
 
    
        
        struts2
        
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
    
    
        
        struts2
        
        /*
    
  • 3.编写数据处理类BookDao.java,此处只是模拟数据
public class BookDao {
    private static Map  books=new LinkedHashMap<>();
    static{
        books.put("书一", 79);
        books.put("书二", 69);
        books.put("书三", 59);
        books.put("书四", 49);
        books.put("书五", 89);
    }
    public Map getBooks(String name){
        Map  books=new LinkedHashMap<>();
        for(Entry entry:BookDao.books.entrySet()){
            if(entry.getKey().toLowerCase().contains(name.toLowerCase())){
                books.put(entry.getKey(), entry.getValue());
                
            }
            
        }
        return books;
        
    }
}

  • 4.编写和配置Action类
    //推荐继承ActionSupport类,这样execute方法可以使用myeclipse工具自动生成
public class QueryAction extends ActionSupport {
    //用于保存请求参数的name属性
    private String name;
    //用于保存转入页面所需要的数据的result属性
    private Map  result;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Map getResult() {
        return result;
    }
    public void setResult(Map result) {
        this.result = result;
    }
    @Override
    public String execute() throws Exception {
        try {
            BookDao bookDao=new BookDao();
            Map books = bookDao.getBooks(name);
            setResult(books);
            return "success1";
        } catch (Exception e) {
            return "error";
        }
        
    }
    
}

在src根目录下配置,struts1.xml



    
    
    
        
        
            /success.jsp
            /error.jsp
        
    



  • 5.编写显示查询结果的JSP页面

方法一,java代码


    <%
        Map books=
        (Map)request.getAttribute("result");
        for(Map.Entry entry:books.entrySet())
        {
        %>
        
        
    <%  } 
    %>
书名 价格
<%=entry.getKey() %> <%=entry.getValue() %>

方法二,JSTL(不推荐使用,相关的代码无法自动提示)

    <%-- 引用JSTL核心库 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
... 省略相关代码

        
书名 价格
${entry.key} ${entry.value}

方法三,Struts2标签(推荐使用)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     
    <%@ taglib prefix="s" uri="/struts-tags"%>




Insert title here


    
            
书名 价格
  • 6.编写输入查询信息的JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   
     <%@ taglib prefix="s" uri="/struts-tags"%>




查询图书信息


    
    
         
        
        
        
        
    


部署运行后,输入如下地址

http://localhost:8080/Struts2_demo/querybooks.jsp

查询页面
显示页面

你可能感兴趣的:(JavaWeb编程实战宝典(5)___ 第5章 编写Struts2第一个程序)