博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven 建 Struts2 基本实现 CURD Controller
阅读量:6239 次
发布时间:2019-06-22

本文共 8679 字,大约阅读时间需要 28 分钟。

开发环境

  • 开发工具:Eclipse
  • 数据库:MySQL
  • server:Tomcat

Struts2 请求原理流程图

struts2 架构图

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

org.apache.struts
struts2-core
2.3.1.2

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

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*

測试流程

  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

>

<!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.浏览器输入:

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 
*/public abstract class BaseAction
extends ActionSupport implements ModelDriven
{
protected T model=null; protected Class
modelClass; /*存放json数据,用来实现ajax*/ protected Map
jsonMap=new HashMap
(); 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
getDataMap() { return jsonMap; } public void setJsonMap(Map
jsonMap{ this.jsonMap = jsonMap; }}
  1. SimpleMethodAction
package com.gx.base;/** * 基本curd方法的空实现,方便统一管理 *  * @author always * * @param 
*/public abstract class SimpleMethodAction
extends BaseAction
{
/** * 列表 * @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
jsonMap
/WEB-INF/jsp/user/list.jsp
/WEB-INF/jsp/user/saveUI.jsp
userAction_list
  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
{ /** * */ 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"%>username列表<%@ include file="/WEB-INF/jsp/public/common.jspf" %>
username 密码 邮箱 联系方式 相关操作
${username} ${password} ${email} ${telphone}
删除

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"%>username列表<%@ include file="/WEB-INF/jsp/public/common.jspf" %>
<%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>
username 密码 邮箱 联系方式 相关操作
${username} ${password} ${email} ${telphone}
删除
改动
加入

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

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
Linux文件权限与属性详解 之 chattr & lsattr
查看>>
负载均衡集群之LVS配置命令
查看>>
PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)
查看>>
多线程编程
查看>>
再谈谈数学
查看>>
Scheme来实现八皇后问题(1)
查看>>
pip或者anacnda安装opencv以及opencv-contrib
查看>>
Unity 5 中的全局光照技术详解(建议收藏)
查看>>
python 的矩阵运算——numpy
查看>>
处理handler中的内存泄漏
查看>>
P8 Visible Lattice Points
查看>>
小小不爽一下
查看>>
【转】NuGet学习笔记(1)——初识NuGet及快速安装使用
查看>>
Python学习笔记 - MySql的使用
查看>>
WebApi FormData+文件长传 异步+同步实现
查看>>
Linux文件与目录管理
查看>>
多态的弊端
查看>>
Spring @Import 注解
查看>>
PBOC APDU命令解析【转】
查看>>
封装HttpUrlConnection开箱即用
查看>>