Maven 构建 Struts2 实现 基本 CURD Controller层代码

开发环境

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

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. 结果:

写控制层代码

  • 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>

时间: 2024-10-10 18:14:17

Maven 构建 Struts2 实现 基本 CURD Controller层代码的相关文章

Maven 建 Struts2 基本实现 CURD Controller

开发环境 开发工具:Eclipse 数据库:MySQL server:Tomcat Struts2 请求原理流程图 构建一个 web maven project,在pom.xml引入struts2的jar包 <!-- struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <versio

Maven构建Struts2项目

1.添加Struts2依赖 这里主需要在pom.xml中添加一个struts-core的依赖即可: 1 <project 2 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven

Maven - 构建Struts2项目

1.MyEclipse设置本地Maven及仓库 2.新建Web Project 3.修改pom.xml 删除原有pom.xml内容,添加如下struts依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem

Maven构建Struts2框架的注意事项

[本人出错点:404,就是在web.xml配置文件中少配置了struts.xml的路径] 1.创建Maven,搭建Struts框架,实现最基本的Hello World 在pom.xml中加入struts2的核心jar包语句,然后Maven会自动给此项目添加上相关需要的Struts2的jar包到: 之后就是run一下,测试Maven是否创建成功!---Maven install; 在最后搭建Struts2框架,引入struts.xml配置文件, 在配置web.xml配置:[其中配置struts.x

Maven学习(三)- 使用Maven构建Web项目

从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在重新操作一下:(使用的是Eclipse JavaEE版 ps:eclipse-jee-indigo-SR1-win32,已经安装好了m2eclipse插件) 1.新建Maven项目 1.1 File -> New -> Other 1.2 选择Maven Project ,单击Next 1.3 保

Spring mvc 对象的对象的属性如何传到controller层

jsp页面的form: <form class="am-form" id="addForm" action="addStudent" method="post"> <div class="am-g am-margin-top"> <div class="am-u-sm-4 am-u-md-2 am-text-right">学生编号</div>

Controller 层实现

一.实验介绍 1.1 实验内容 本节课程主要利用 Spring MVC 框架实现 Controller 层以及一些辅助类的实现. 1.2 实验知识点 Spring MVC 框架 1.3 实验环境 JDK1.8 Eclipse JavaEE 二.实验步骤 在项目 hrms 的目录 src/main/java 下新建包 com.shiyanlou.controller,作为 Controller 层的包,新建包 com.shiyanlou.util,作为辅助类的包,这些辅助类是为了使 Control

使用FormData进行Ajax请求上传文件到controller层的实现

需求背景: 页面上传一个文件到controller层,然后后台对文件进行处理.文件类型不限. 第一种:单纯的上传文件 页面功能展现: 第一步:首先需要两个jar commons-fileupload-1.3.2.jarcommons-io-2.4.jar 版本不限: pom文件中相应两个jar: [html] view plain copy print? <dependency> <groupId>commons-io</groupId> <artifactId&

Eclipse 下用Maven构建ssh框架web工程

之前的项目中用到了maven,而且是web项目(但不是标准的ssh架构),趁着假期,重用南哥的pom文件,自己也试试用maven构建web项目,搭建完整的ssh开发框架. 工具准备:jdk,eclipse,maven Eclipse 插件:Hibernate Tools (以上工具软件请请自行Google下载安装) 当然,构建过程需要畅通的网络,以确保maven能顺利下载依赖包. 第一步,在eclipse新建Maven项目, New->Maven Project: 两个next之后选择maven