Maven 构建 Struts2 实现 基本 CURD Controller

来源:互联网 发布:安装php基础环境搭建 编辑:程序博客网 时间:2024/06/01 18:25

开发环境

  • 开发工具:Eclipse
  • 数据库:MySQL
  • 服务器:Tomcat

Struts2 请求原理流程图

struts2 架构图

构建一个 web maven 工程,在pom.xml引入struts2的jar包

        <!-- struts2 -->        <dependency>            <groupId>org.apache.struts</groupId>            <artifactId>struts2-core</artifactId>            <version>2.3.1.2</version>        </dependency>

在 web.xml 文件中引入struts2的过滤器

    <filter>        <filter-name>struts2</filter-name>        <filter-class>            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter        </filter-class>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

测试流程

  1. 创建一个TestAction类
package com.gx.action;public class TestAction {    public String helloworld(){        return "hello";    }}

2.在resources下创建struts.xml和test.xml文件

  • test.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <package name="userPkg" namespace="/testspace" extends="struts-default">        <!-- http://localhost:8080/manningSampleApp/packageNamespace/actionName_method -->        <action name="testAction_*" class="com.gx.action.TestAction" method="{1}">            <result name="hello">/WEB-INF/test.jsp</result>        </action>        <!--             <action ...         -->    </package></struts>
  • 在struts.xml文件中引入user.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <include file="test.xml"></include></struts>

3.浏览器输入:http://localhost:8080/struts2curd/testspace/testAction_helloworld
4. 结果:访问成功后显示的hello,world

写控制层代码

  • BaseAction
package com.gx.base;import java.lang.reflect.ParameterizedType;import java.util.HashMap;import java.util.Map;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/** *  * BaseAction类 *          继承ActionSupport和实现了ModelDriven接口 * @author always * * @param <T> */public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>{    protected T model=null;    protected Class<T> modelClass;    /*存放json数据,用来实现ajax*/    protected Map<String, Object> jsonMap=new HashMap<String, Object>();    public BaseAction(){        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();        modelClass=(Class) pt.getActualTypeArguments()[0];    }    public T getModel() {        if(model==null){            try {                model=modelClass.newInstance();            } catch (final Exception e) {                LOG.error(e.getMessage());            }         }        return model;    }    public Map<String, Object> getDataMap() {        return jsonMap;    }    public void setJsonMap(Map<String, Object> jsonMap{        this.jsonMap = jsonMap;    }}
  1. SimpleMethodAction
package com.gx.base;/** * 基本curd方法的空实现,方便统一管理 *  * @author always * * @param <T> */public abstract class SimpleMethodAction<T> extends BaseAction<T>{    /**     * 列表     * @return     *      list.jsp     */    public String list(){        return "list";    }    /**     * 删除     * @return     *      toList-->actionName_list-->list.jsp(user.xml中配置)     */    public String delete(){        return "toList";    }    /**     * 修改     * @return     *      toList-->actionName_list-->list.jsp     */    public String edit(){        return "toList";    }    /**     * 修改页面     * @return     *      saveUI.jsp     */    public String editUI(){        return "saveUI";    }    /**     * 添加     * @return     *      toList-->actionName_list-->list.jsp     *      */    public String add(){        return "toList";        }    /**     * 添加页面     * @return     *      saveUI.jsp     */    public String addUI(){        return "saveUI";    }}
  1. user.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <package name="userPkg" namespace="/user" extends="json-default">        <!-- http://localhost:8080/manningSampleApp/packageNamespace/actionName_method -->        <!-- 普通用户管理 -->        <action name="userAction_*" class="com.gx.web.struts2.UserAction" method="{1}">        <!--            sturts框架自动转            要在pom.xml引入            <dependency>                <groupId>org.apache.struts</groupId>                <artifactId>struts2-json-plugin</artifactId>                <version>2.2.3</version>            </dependency>        -->            <result type="json">                <param name="root">jsonMap</param>            </result>            <result name="list">/WEB-INF/jsp/user/list.jsp            </result>            <result name="saveUI">/WEB-INF/jsp/user/saveUI.jsp            </result>            <result name="toList" type="redirectAction">userAction_list</result>        </action>    </package></struts>
  1. UserAction
package com.gx.web.struts2;import org.apache.log4j.Logger;import com.gx.base.SimpleMethodAction;import com.gx.domain.PageBean;import com.gx.domain.User;import com.gx.service.UserService;import com.gx.service.impl.UserServiceImpl;import com.opensymphony.xwork2.ActionContext;/** * 继承SimpleMethodAction * @author always * */public class UserAction extends SimpleMethodAction<User> {    /**     *      */    private static final long serialVersionUID = -8771772792039694213L;    static Logger log = Logger.getLogger(UserAction.class);    private UserService userService = new UserServiceImpl();    /*删除,修改 用户时传来的id*/    private int userId;    /*分页*/    private int pageNum = 1;    @Override    public String list() {        ActionContext ac = ActionContext.getContext();        PageBean pageBean = userService.getPageBean(pageNum, 5);        ac.getValueStack().push(pageBean);        return super.list();    }    public String listJson() {        jsonMap.clear();        ActionContext ac = ActionContext.getContext();        PageBean pageBean = userService.getPageBean(pageNum, 5);        jsonMap.put("pageBean", pageBean);        jsonMap.put("success", true);        return SUCCESS;    }    @Override    public String delete() {        userService.delete(userId);        return super.delete();    }    @Override    public String edit() {        User model = this.getModel();        userService.update(model);        return super.edit();    }    @Override    public String editUI() {        log.info(userId);        User user = userService.getById(userId);        log.info(user.toString());        ActionContext.getContext().getValueStack().push(user);        return super.editUI();    }    @Override    public String add() {        User model = this.getModel();        log.info(model.toString());        userService.save(model);        return super.add();    }    @Override    public String addUI() {        return super.addUI();    }    @Override    public void validate() {        log.info("开始校验");        super.validate();    }    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    public int getPageNum() {        return pageNum;    }    public void setPageNum(int pageNum) {        this.pageNum = pageNum;    }}

jsp 代码

  • list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>用户名列表</title><%@ include file="/WEB-INF/jsp/public/common.jspf" %></head><body><s:debug></s:debug>    <div class="container">    <!-- 分页信息 -->    <s:form id="pageform" action="userAction_list">        <table class="table">            <!-- 表头-->            <thead>                <tr>                    <td>用户名</td>                    <td>密码</td>                    <td>邮箱</td>                    <td>联系方式</td>                    <td>相关操作</td>                </tr>            </thead>            <!--显示数据列表-->            <tbody>                <s:iterator value="recordList">                    <tr>                        <td>${username}</td>                        <td>${password}</td>                        <td>${email}</td>                        <td>${telphone}</td>                        <td>                            <s:a action="userAction_delete?userId=%{id}" onclick="return confirm('您确定要删除么?')">删除</s:a>                            <s:a action="userAction_editUI?userId=%{id}">修改</s:a>                        </td>                    </tr>                </s:iterator>                <%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>            </tbody>        </table>        </s:form>        <!-- 其他功能超链接 -->        <div>            <div>                <s:a action="userAction_addUI">添加</s:a>            </div>        </div>        </div></body></html>
  • saveUI.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>用户名列表</title><%@ include file="/WEB-INF/jsp/public/common.jspf" %></head><body><s:debug></s:debug>    <div class="container">    <!-- 分页信息 -->    <s:form id="pageform" action="userAction_list">        <table class="table">            <!-- 表头-->            <thead>                <tr>                    <td>用户名</td>                    <td>密码</td>                    <td>邮箱</td>                    <td>联系方式</td>                    <td>相关操作</td>                </tr>            </thead>            <!--显示数据列表-->            <tbody>                <s:iterator value="recordList">                    <tr>                        <td>${username}</td>                        <td>${password}</td>                        <td>${email}</td>                        <td>${telphone}</td>                        <td>                            <s:a action="userAction_delete?userId=%{id}" onclick="return confirm('您确定要删除么?')">删除</s:a>                            <s:a action="userAction_editUI?userId=%{id}">修改</s:a>                        </td>                    </tr>                </s:iterator>                <%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>            </tbody>        </table>        </s:form>        <!-- 其他功能超链接 -->        <div>            <div>                <s:a action="userAction_addUI">添加</s:a>            </div>        </div>        </div></body></html>

为了方便,在这里我没有将js与jsp代码分离,最好的做法是jsp外部引用js文件,并将引用的文件放到html代码后</body>

0 0
原创粉丝点击