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>
            <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>username列表</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>username</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>username列表</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>username</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:10

Maven 建 Struts2 基本实现 CURD Controller的相关文章

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

maven建spring mvc 项目访问不到uri 解决:

用maven 测试一下spring+springmvc+hibernate时,springmvc按以前本地jar建的web项目测试来配置,可怎么也访问不了uri,新建了几个项目,一直找不到,或报错! 搞了大半天,终于解决了!主要是mvc的配置如下: 其他配置照旧! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

Maven搭建struts2+spring+hibernate环境

Maven搭建struts2+spring+hibernate环境(一) 本文简单的使用STS的自带的maven插件工具搭建ssh(struts2+spring+hibernate)开发环境,图文并茂,简单上手,适合新手. 关于STS的介绍,请参考另一篇文章<Java IDE介绍:Spring开发利器-spring-tool-suite>地址:http://blog.csdn.net/sgl731524380/article/details/8831540 首先,STS自带的maven的插件已

使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境

做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框架来开发项目,而这些框架一般不是单独使用的,经常是Struts2+Spring3+Hibernate.SpringMVC+Spring+Hibernate.SpringMVC+Spring+Mybatis这几种组合中的一种,也就是多个框架配合起来使用.今天来总结一下如何使用Maven搭建Struts

maven与struts2

本文为原创,转载请注明来自:http://blog.csdn.net/j903829182/article/details/38128777 在我学mavne的时候,遇到了很多的问题,不知道怎么用maven进行包的管里,后来在网上查看了很多的资料,借鉴了其他的博客资料,但是看其他的博客写的不是很详细,所以我在前人的基础上写下我自己学习maven管理struts2项目的过程和步骤,希望对初学者有所帮助,也对于我自己以后在使用maven带来方便.本博文参照的博文是:http://blog.csdn.

用maven建一个Hello World项目,maven初使用,maven如何使用

大牛都说maven好用,自己就配置了maven的环境变量,用eclipse建了一个maven项目,但是很遗憾,运行时报错了! 下面就一步步的用maven建一个简单的web项目来讲解一下:(环境配置百度上有,我也忘了,JDK我都不记得怎么配了) 我用了一个新的eclipse来建项目(因为使用maven除了要配置环境变量之外,在eclipse中也是需要配置一些东西的!---我的eclipse用的是jee-mars,其实jee-neon2是最新的,但是这个版本老是无响应,我就换了一个,可能是我的电脑太

如何使用maven建一个web3.0的项目

使用eclipse手动建一个maven的web project可能会有版本不合适的情况,例如使用spring的websocket需要web3.0什么的,不全面的修改可能会出现各种红叉,甚是苦恼.我从我的使用经验出发,从建立一个maven项目开始,记录我用maven建一个web3.0的项目. 建立一个maven的web项目 1.首先要安装配置好maven,具体怎么配置就不说了. 2.eclipse->new project->maven project->next->选择maven-

Maven搭建Struts2+Spring3+Hibernate4框架

做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框架来开发项目,而这些框架一般不是单独使用的,经常是Struts2+Spring3+Hibernate.SpringMVC+Spring+Hibernate.SpringMVC+Spring+Mybatis这几种组合中的一种,也就是多个框架配合起来使用.今天来总结一下如何使用Maven搭建Struts

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