热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

struts2+spring+ibatis框架整合实现增删改查

这篇文章主要为大家详细介绍了struts2+spring+ibatis框架整合实现增删改查操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

初步学习SSI框架,做的struts2+spring+ibatis框架整合的小实例,实现增删改查操作。

项目框架如下所示:

准备工作:导入需要的struts2、spring、ibatis的jar包,这里不一一列举了。

下面直接上完整的配置文件内容和代码,不说明先后步骤了

一、配置文件

1、spring配置文件applicationContext.xml(业务逻辑层)

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

 
 
 
 
 
 classpath*:jdbc.properties
 
 
 
 
 
 
 
 
 
 
 
 
  
  
  
 
 
 
 
 
 
 
 
 classpath*:/sqlMapConfig.xml
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

2、数据库参数配置文件jdbc.properties

jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@198.10.3.138:1521:fapdb
jdbc.username=fapdb
jdbc.password=fapdb

3、ibatis配置文件sqlMapConfig.xml(持久层)

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

 

 
 
  
 

4、实体类sql配置文件User.xml(持久层)

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

   

 
 
 
 
 
 
 
 
 
 insert into gy_user(USERID,USERNAME,PASSWORD) values(#userid#,#username#,#password#)
 

 

 
 
 
 delete from gy_user where USERID=#id#
 

 
 update gy_user set USERID=#userid#,USERNAME=#username#,PASSWORD=#password# where USERID=#userid#
 

5、struts参数配置文件struts.properties

### 默认编码
struts.i18n.encoding=UTF-8
### 使用spring装配工厂
struts.objectFactory = spring
struts.objectFactory.spring.autoWire = name
struts.objectFactory.spring.useClassCache = true
struts.multipart.parser=jakarta
struts.multipart.saveDir=/tmp
struts.multipart.maxSize=209715200
struts.action.extension=do
struts.serve.static=true
struts.serve.static.browserCache=true
struts.enable.DynamicMethodInvocation = true
struts.enable.SlashesInActiOnNames= false
struts.tag.altSyntax=true
struts.devMode = false
struts.i18n.reload=true
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl
struts.configuration.xml.reload=ture
struts.ui.theme=simple
struts.velocity.cOnfigfile= velocity.properties
struts.url.http.port = 80
struts.url.https.port = 443
struts.url.includeParams = get
struts.dispatcher.parametersWorkaround = false
struts.freemarker.templatesCache=false
struts.freemarker.beanwrapperCache=false
struts.freemarker.wrapper.altMap=true
struts.xslt.nocache=false
struts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xml
struts.mapper.alwaysSelectFullNamespace=false

6、struts配置文件struts.xml(控制层)

<&#63;xml version="1.0" encoding="UTF-8" &#63;>

 
  
  
  
  /success.jsp
  /userResult.jsp
  /success.jsp
  /userUpdate.jsp
  /success.jsp
  
  
 

7、web.xml配置文件

<&#63;xml version="1.0" encoding="UTF-8"&#63;>

 
 index.jsp
 
 
  
 
 contextConfigLocation
 classpath*:applicationContext.xml
 
 
 org.springframework.web.context.ContextLoaderListener
 
 
 
 
 
 struts
 
 org.apache.struts2.dispatcher.FilterDispatcher
 
 
 
 struts
 *.do
 
 
 struts
 *.action
 
 
 struts
 *.jsp
 

二、model模型层

实体类User.java

package com.user.model;
 
public class User {
 private int userid;
 private String username;
 private String password;
 
 public int getUserid() {
 return userid;
 }
 public String getUsername() {
 return username;
 }
 public String getPassword() {
 return password;
 }
 public void setUserid(int userid) {
 this.userid = userid;
 }
 public void setUsername(String username) {
 this.username = username;
 }
 public void setPassword(String password) {
 this.password = password;
 }
 
 
}

三、Action控制层

userAction.java类

package com.user.action;
 
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.user.model.User;
import com.user.service.UserService;
 
public class userAction extends ActionSupport{
 HttpServletRequest request;
 private User user;
 private UserService userService;
 int id;
 
 public int getId() {
 return id;
 }
 
 public void setId(int id) {
 this.id = id;
 }
 
 public User getUser() {
 return user;
 }
 
 public void setUser(User user) {
 this.user = user;
 }
 
 public UserService getUserService() {
 return userService;
 }
 
 public void setUserService(UserService userService) {
 this.userService = userService;
 }
 
 public String insertUser() throws Exception{
 userService.insertUser(user);
 return "success";
 }
 //查询用户
 public String queryUser() throws Exception{
 List userlist=userService.queryUser(user);
 System.out.println("userAction--size--"+userlist.size());
 for(int i=0;i

四、Service接口+实现(业务逻辑层)

1、Service接口

UserService.java类

package com.user.service;
 
import java.util.List;
import com.user.model.User;
 
public interface UserService {
 //添加用户
 public void insertUser(User user) throws Exception;
 //查询用户
 public List queryUser(User user) throws Exception;
 //查询用户by id
 public User queryUserById(int id) throws Exception;
 //删除用户
 public void deleteUser(int id) throws Exception;
 //修改用户
 public void updateUser(User user) throws Exception;
}

2、Service接口实现

UserServiceImpl.java类

package com.user.service.impl;
 
import java.util.List;
import com.user.model.User;
import com.user.service.UserService;
import com.user.dao.UserDao;
 
public class UserServiceImpl implements UserService{
 private UserDao userdao=null;
 public UserDao getUserdao() {
 return userdao;
 }
 
 public void setUserdao(UserDao userdao) {
 this.userdao = userdao;
 }
 //添加用户
 public void insertUser(User user) throws Exception {
 // TODO Auto-generated method stub
 System.out.println("插入数据User开始--->UserService");
 userdao.insertUser(user);
 System.out.println("插入数据User结束--->UserService");
 }
 //查询用户
 public List queryUser(User user) throws Exception{
 System.out.println("查询数据User开始--->UserService");
 List userlist=userdao.queryUser(user);
 System.out.println("UserService--size--"+userlist.size());
 for(int i=0;iUserService");
 return userlist;
 }
 //删除用户
 public void deleteUser(int id) throws Exception {
 // TODO Auto-generated method stub
 System.out.println("删除数据User开始--->UserService");
 userdao.deleteUser(id);
 System.out.println("删除数据User开始--->UserService");
 }
 //查询用户by id
 public User queryUserById(int id) throws Exception {
 // TODO Auto-generated method stub
 System.out.println("查询数据BY ID开始--->UserService"+"---"+id);
 User user=userdao.queryUserById(id);
 System.out.println("查询数据BY ID结束--->UserService"+"---"+id);
 return user;
 }
 //修改用户
 public void updateUser(User user) throws Exception {
 // TODO Auto-generated method stub
 System.out.println("更新数据User开始--->UserService");
 userdao.updateUser(user);
 System.out.println("更新数据User开始--->UserService");
 }
 
}

五、DAO接口+实现(持久层)

1、DAO接口

UserDao.java类

package com.user.dao;
import java.util.List;
import com.user.model.User;;
 
public interface UserDao {
 //添加用户
 public void insertUser(User user);
 //查询用户
 public List queryUser(User user);
 //查询用户by id
 public User queryUserById(int id);
 //删除用户
 public void deleteUser(int id);
 //修改用户
 public void updateUser(User user);
}

2、DAO接口实现

UserServiceImpl.java类

package com.user.dao.impl;
 
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.user.dao.UserDao;
import com.user.model.User;
 
public class UserDaoImpl extends SqlMapClientDaoSupport implements UserDao{
 //添加用户
 public void insertUser(User user ){
 System.out.println("插入数据User开始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword());
 this.getSqlMapClientTemplate().insert("insertUser",user);
 System.out.println("插入数据User结束--->UserDao");
 }
 //查询用户
 public List queryUser(User user){
 System.out.println("查询数据User开始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword());
 List userlist=(List)this.getSqlMapClientTemplate().queryForList("queryUser", user);
 System.out.println("查询数据User结束--->UserDao");
 return userlist;
 }
 //删除用户
 public void deleteUser(int id) {
 System.out.println("删除数据User开始--->UserDao"+"---"+id);
 this.getSqlMapClientTemplate().delete("deleteUser", id);
 System.out.println("删除数据User结束--->UserDao"+"---"+id);
 }
 //查询用户by id
 public User queryUserById(int id) {
 System.out.println("查询数据BY ID开始--->UserDao"+"---"+id);
 User user=(User)this.getSqlMapClientTemplate().queryForObject("queryUserById", id);
 System.out.println("查询数据BY ID结束--->UserDao"+"---"+id);
 return user;
 }
 //修改用户
 public void updateUser(User user) {
 System.out.println("更新数据User开始--->UserDao"+"---"+user.getUserid());
 this.getSqlMapClientTemplate().update("updateUser", user);
 System.out.println("更新数据User结束--->UserDao"+"---"+user.getUserid());
 }
}

六、JSP文件(表示层)

1、index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


 
 
 
 
 添加用户
查询/管理用户

2、query.jsp查询页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


 
 
 
 
 
 用户ID:
 
 
 

3、userAdd.jsp添加用户页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


 
 
 
 
 
 
 
用户ID:
用户名:
密码:

4、userUpdate.jsp修改用户页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.user.model.User" ;%>


 
 
 
 
 
 <%
 User user=(User)session.getAttribute("result");
 %>
 
 
用户ID:
用户名:
密码:

5、userResult.jsp用户列表

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.user.model.User" ;%>



 
 
 
 <%
 List userlist=(List)session.getAttribute("userresult"); 
 System.out.println("userResult.jsp--size--"+userlist.size());
 for(int i=0;i
 
  <%for(int i=0;i
  
  <%} %>
 
用户ID 用户名 密码 修改 删除
<%=userlist.get(i).getUserid() %> <%=userlist.get(i).getUsername() %> <%=userlist.get(i).getPassword() %> 修改 删除

6、success.jsp操作成功页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


 
 
 
 
 操作成功!
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Pikachu SQL注入实战解析
    作为一名网络安全新手,本文旨在记录个人在SQL注入方面的学习过程与心得,以备后续复习之用。通过逐步深入的学习,力求掌握每个知识点后再向下一个挑战迈进。 ... [详细]
  • Spring Boot + MyBatis Plus 实现SQL语句打印的两种方法
    本文详细介绍了如何在Spring Boot和MyBatis Plus环境中实现SQL语句打印的两种方法,包括配置文件设置和多数据源环境下的动态配置。适合开发者在日常开发和调试过程中参考。 ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • 深入解析Apache SkyWalking CVE-2020-9483 SQL注入漏洞
    本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ... [详细]
  • .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了
    .NETCore中的一个接口多种实现的依赖注入与动态选择看这篇就够了最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的 ... [详细]
  • AJAX技术允许网页在不重新加载整个页面的情况下进行异步更新,通过向服务器发送请求并接收JSON格式的数据,实现局部内容的动态刷新。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • Vue项目中应用骨架屏实践
    在当前开发的项目中,由于登录过程涉及多次重定向,导致用户体验不佳。为了改善这一状况,本文介绍了如何使用vue-skeleton-webpack-plugin插件在Vue项目中实现骨架屏,以减少用户感受到的白屏时间。 ... [详细]
  • 构建首个Spring MVC应用程序
    本指南将指导您如何从零开始创建一个简单的Spring MVC应用,涵盖项目模块创建、依赖管理、核心配置及控制器开发等关键步骤。 ... [详细]
  • 本文介绍了Java Web应用中的资源重定向和请求转发机制,包括默认欢迎资源文件的设置方法,以及多个Servlet之间的调用规则和数据共享方案。 ... [详细]
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • Zookeeper面试常见问题解析
    本文详细介绍了Zookeeper中的ZAB协议、节点类型、ACL权限控制机制、角色分工、工作状态、Watch机制、常用客户端、分布式锁实现、默认通信框架以及消息广播和领导选举的流程。 ... [详细]
  • 深入探讨PHP中的输出缓冲技术(Output Buffering)
    本文深入解析了PHP中输出缓冲(Output Buffering)的原理及其在Web开发中的应用,特别是如何通过输出缓冲技术有效管理HTTP头部信息,提高代码的灵活性与健壮性。 ... [详细]
author-avatar
小妖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有