1.index.jsp访问项目默认页面
2.主页上“注册”按钮的页面文件
3. com.action 的UserManagerAction.java
4. vo包
5.service层的代码
6.用户管理中dao层的操作:
----------------------------以上用户管理的实现------------------------
7.用户登录action
8. 用户登录service
9.一些页面 manager.jsp
update.jsp (其它不是太复杂的页面省略)。
详细的见附件,里面包括源码和数据库文件。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head> <body> <form id="myform" action="login" method="post"> <input type="button" name="b2" value="注册" onClick="window.open('register.jsp','new','height=250,width=400,top=100,left=400')" /> <input type="button" name="b1" value="用户管理" onClick="doLink('queryall')" /> <br> username:<input type="text" name="nuser" /> <br> password:<input type="password" name="password" /> <br> <input type="submit" name="sub" value="登录" /> <input type="reset" name="reset" value="重置" /> </form> </body> </html>
2.主页上“注册”按钮的页面文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>注册页面</title> </head> <body> <form action="register" method="post" id="myform"> 用户名: <input type="text" name="nuser" id="nuserid"><br/> 密 码: <input type="password" name="password" ><br> <input type="submit" value="注册" > </form> </body> </html>
3. com.action 的UserManagerAction.java
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.service.IUserManager; import com.vo.User_SSI; public class UserManagerAction extends ActionSupport { private static final long serialVersionUID = 1L; private String nuser; private String password; private IUserManager managerService; public String queryall() { List<User_SSI> list = managerService.queryall(); HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("nuserList", list); return SUCCESS; } public String register() { User_SSI user_SSI = new User_SSI(); user_SSI.setNuser(nuser); user_SSI.setPassword(password); boolean flag = false; System.out.println("测试执行了action中的这句没有!"); flag = managerService.register(user_SSI); return flag==true?SUCCESS:ERROR; } public String update() { User_SSI user_SSI = new User_SSI(); HttpServletRequest request = ServletActionContext.getRequest(); String nuser2 = request.getParameter("nuser"); //获取页面中的值 String pwd2 = request.getParameter("password"); this.setNuser(nuser2); //设置到相应的属性中 this.setPassword(pwd2); user_SSI.setNuser(nuser); user_SSI.setPassword(password); System.out.println("------------获得需要修改的用户名-----------------"+nuser2); boolean flag = false; System.out.println("nuser=>"+nuser); System.out.println("getusername()=>"+getNuser()); flag = managerService.update(user_SSI); // return flag==true?SUCCESS:ERROR; //这里还不能让程序直接执行更新操作。 return SUCCESS; } @SuppressWarnings("unused") public String delete() { HttpServletRequest request = ServletActionContext.getRequest(); String nuser=request.getParameter("nuser"); boolean flag = false; flag = managerService.delete(getNuser()); return flag==true?SUCCESS:ERROR; } public String getNuser() { return nuser; } public void setNuser(String nuser) { this.nuser = nuser; } public static long getSerialversionuid() { return serialVersionUID; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public IUserManager getManagerService() { return managerService; } public void setManagerService(IUserManager managerService) { this.managerService = managerService; } }
4. vo包
package com.vo; public class User_SSI { private String nuser; private String password; public User_SSI() { super(); } public User_SSI(String nuser, String password) { super(); this.nuser = nuser; this.password = password; } public String getNuser() { return nuser; } public void setNuser(String nuser) { this.nuser = nuser; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
5.service层的代码
package com.service; import java.util.List; import com.vo.User_SSI; //管理用户的一些方法定义在接口中 public interface IUserManager { public List<User_SSI> queryall() ; public boolean register(User_SSI user_SSI); public boolean update(User_SSI user_SSI); public boolean delete(String username); }
//接口具体的实现 package com.service; import java.util.List; import com.dao.IUserDao; import com.vo.User_SSI; public class ManagerService implements IUserManager { private IUserDao userDao; public List<User_SSI> queryall(){ List<User_SSI> l1 = userDao.queryUser(); return l1; } public boolean register(User_SSI user_SSI){ System.out.println("----------------"+user_SSI.getNuser()); System.out.println("----------------"+user_SSI.getPassword()); userDao.insertUser(user_SSI);//出过一个NullPointer异常,是因为在这里不能新new一个User,要依赖于Spring注入 return true; } public boolean update(User_SSI user_SSI){ return userDao.updateUser(user_SSI); } public boolean delete(String username){ return userDao.deleteUser(username); } public IUserDao getUserDao() { return userDao; } public void setUserDao(IUserDao userDao) { this.userDao = userDao; } }
6.用户管理中dao层的操作:
package com.dao; import java.util.List; import com.vo.User_SSI; public interface IUserDao { public List<User_SSI> queryUser(); public boolean deleteUser(String id); public void insertUser(User_SSI u); public boolean updateUser(User_SSI u); public List<User_SSI> queryUserName(String name); }
package com.dao; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.vo.User_SSI; public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao { /*这儿不用手动初始化了,等着spring注入完直接用 * spring会往service里,注入一个带dataSource和ibatis配置的dao * private static SqlMapClient sqlMap; void init() { try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");//借助Reader读入xml配置,注意位置 sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e); } } */ @SuppressWarnings("unchecked") public List<User_SSI> queryUser() { List<User_SSI> list = null; list = getSqlMapClientTemplate().queryForList("User.getAllUser"); return list; } public boolean deleteUser(String id) { int deletedCount = 0; deletedCount = getSqlMapClientTemplate().delete("User.deleteUserById",id); return deletedCount>0?true:false; } @SuppressWarnings("unused") public void insertUser(User_SSI u) { int insertCount = 0; getSqlMapClientTemplate().insert("User.insertUser",u); } public boolean updateUser(User_SSI u) { int updatedCount = 0; updatedCount = getSqlMapClientTemplate().update("User.updateUser",u); System.out.println("updatedCount=>"+updatedCount); return updatedCount>0?true:false; } @SuppressWarnings("unchecked") public List<User_SSI> queryUserName(String uname) { List<User_SSI> list = null; list = getSqlMapClientTemplate().queryForList("User.selectUserByUsername",uname); return list; } }
----------------------------以上用户管理的实现------------------------
7.用户登录action
package com.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.service.ILogin; public class LoginAction extends ActionSupport { /** * test ssi seconde * author cat */ private static final long serialVersionUID = 1L; private String nuser; private String password; private ILogin loginService; public LoginAction() { } public String login(){ boolean flag = false; //System.out.println("--------action flag返回值----"+flag); //System.out.println(getNuser()+"------"+getPassword()); flag = loginService.login(getNuser(), getPassword()); //System.out.println("--------action flag返回值 step 2----"+flag); if (true == flag) { Map<String, Object> attibutes = ActionContext.getContext() .getSession();// 记录用户登录信息 attibutes.put("nuser", nuser); attibutes.put("password", password);// 登录session } return flag == true ? SUCCESS : ERROR; } public String logOut() { Map<String, Object> attibutes = ActionContext.getContext().getSession(); attibutes.remove("nuser"); return SUCCESS; } public String getNuser() { return nuser; } public void setNuser(String nuser) { this.nuser = nuser; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public ILogin getLoginService() { return loginService; } public void setLoginService(ILogin loginService) { this.loginService = loginService; } }
8. 用户登录service
package com.service; public interface ILogin { public boolean login(String nuser, String password); }
package com.service; import java.util.List; import com.dao.IUserDao; import com.vo.User_SSI; public class LoginService implements ILogin { private IUserDao userDao; public boolean login(String nuser, String password) { User_SSI user = new User_SSI(); user.setNuser(nuser); user.setPassword(password); List<User_SSI> l = userDao.queryUserName(user.getNuser()); if(l==null || l.size()==0) return false; for(int i=0;i<l.size();i++){ String pwd = l.get(i).getPassword(); if(user.getPassword().equals(pwd)) return true; } return false; } public IUserDao getUserDao() { return userDao; } public void setUserDao(IUserDao userDao) { this.userDao = userDao; } }
9.一些页面 manager.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>管理窗口</title> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head> <body> <form action="#" id="myform" name="myform" method="post"> <table border=1 width="80%"> <tr> <th width="39%">用户名</th> <th width="39%">密码</th> <th>修改</th> <th>删除</th> </tr> <tr> <s:iterator value="#request.nuser" id="id" status="st"> <s:if test="#st.index%2==0||#st.last"> <tr> </s:if> <td><s:property value="#id.nuser" /></td> <td><s:property value="#id.password" /></td> <td><input style="width: 40px; height: 40px" name="button" type="button" class="class1" onMouseOver="this.className='class2'"onMouseOut="this.className='class1'" onClick="window.open('update.action?nuser=<s:property value="#id.nuser" />&password=<s:property value="#id.password" />','new','height=500,width=800,top=100,left=400')" value="修改" /></td> <td><input style="width: 40px; height: 40px" name="button" type="button" class="class3" onMouseOver="this.className= 'class4'"onMouseOut="this.className='class3'" onclick="doLink('delete?nuser=<s:property value="#id.nuser" />')" value="删除" /></td> <s:if test="#st.index%2==0||#st.last"> <!-- 这里本多一个tr --> </s:if> </s:iterator> </tr> </table> </form> </body> </html>
update.jsp (其它不是太复杂的页面省略)。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>update_date</title> <!-- 根据传参控制调用的Action以及方法 --> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head> <body> <h4> 修改: </h4> <s:form name="myForm" action="register" method="post"> <table border="1" cellpadding="1" cellspacing="1" width="480"> <tr><td> 用户名:<input type="text" name="nuser" value="${nuser}"><!-- 这个name需跟action中的一致 --> 密 码:<input type="password" name="password" value="${password}"> <input type="hidden" name="id" value="${dto.id}"> </td></tr> </table><br> <input value="提交" type="submit"> <input type="reset" value="重 置"> <input type="button" value="返 回" onclick="window.location.href='javascript:history.go(-1)'"> </s:form> </body> </html>
详细的见附件,里面包括源码和数据库文件。
- ssit.rar (33.3 KB)
- 下载次数: 4
发表评论
-
Spring MVC Controller单例陷阱
2014-09-12 10:01 967Spring MVC Controller默认是单例的: 单 ... -
Spring MVC模型(Model)层和视图(View)层
2014-04-20 18:57 0Spring MCV中Model层是View层的数据容器,Js ... -
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2014-04-20 18:52 3112spring mvc处理方法支持如下的返回方式:ModelAn ... -
spring mvc常用注解@Component @Controller @Service @Repository
2014-03-13 16:10 9235注解用了之后,会在*.xml文件中大大减少配置量。以前我们每个 ... -
applicationContext.xml 配置文件在web.xml中的写法
2014-03-11 16:28 2822applicationContext.xml 配置文件的一些认 ... -
SpringMVC和Struts2的比较
2014-02-27 19:12 782通俗说Spring的作用 Spring ... -
Struts-config.xml配置文件《action-mappings》元素的详解
2014-02-26 13:12 2489action-mappings 该元素用于将Action元素定 ... -
使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码
2014-02-24 23:02 1047[size=medium]通过网上学习,要求修改Hiberna ... -
在web.xml中通过contextConfigLocation配置spring
2014-02-24 21:19 2362在web.xml中通过contextConfigLocatio ... -
Struts-config.xml配置action-mappings元素略计
2014-02-24 16:58 671action-mappings 该元素用于将Action元素 ... -
Spring的DataAccessException略记
2013-07-08 19:23 2515Spring的DAO框架没有抛出 ... -
Result Type(Struts.xml配置)
2013-06-25 08:35 657一个提交到服务器的处理通常可以分为两个阶段: 第一个阶段查询服 ... -
ibatis常用标记略记
2013-06-23 21:12 1016isNull判断property字段是否是null,用isEm ... -
ibatis的iterate使用
2013-06-23 20:38 1116ibatis的iterate使用 Iterate:这属性遍历 ... -
Struts2 两个Action之间动态传参
2013-06-21 10:00 1094两个Action 动态传参数 研究了近两天的时间 ... -
spring入门之—第一步
2013-06-13 15:26 753注: 本文用的是spring-framework-3.1.1. ... -
Spring的ApplicationContext加载多个配置文件的三种方式
2013-06-13 15:09 18711.第一种,使用数组方式 ApplicationConte ... -
详解iBaits中SqlMapClientTemplate的使用
2013-06-05 16:07 0pache iBatis(现已迁至Google Code下发展 ... -
Struts2.0默认支持多种格式的result type
2013-06-05 16:00 901<action name="attachmen ... -
maven+ssi对oracle实现增删改查(一)
2013-06-05 11:40 1262-. 1.Oracle10g 的表结构语句,需要内容的自己添加 ...
相关推荐
本教程将通过一个实际的项目案例,讲解如何使用Maven、SpringBoot、MyBatis和MySQL这四个关键技术来实现基本的数据增删改查(CURD)功能。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Maven是一个项目...
这个项目"spring mvc + mybatis + maven + easyui + oracle 数据库实现增删改查"就是一个典型的例子,它整合了五个关键组件来完成常见的CRUD(创建、读取、更新和删除)操作。以下是对这些技术及其相互作用的详细...
本项目旨在为初学者提供一个基础的增删改查(CRUD)操作和用户登录功能的实现教程。下面我们将深入探讨这个组合中的每个组件及其在实际开发中的作用。 **Maven** 是一个项目管理和综合工具,主要用于管理Java项目的...
在本项目中,我们主要探讨的是一个基于"Maven+Spring+SpringMVC+Hibernate+EasyUI"技术栈实现的典型企业级应用系统,主要用于完成基本的CRUD(增删改查)操作。以下是对这些技术及其在项目中的作用的详细说明: 1. ...
在本项目中,我们利用了SpringBoot、MyBatis、MySQL、LayUI和Thymeleaf这五种核心技术,构建了一个完整的Web应用程序,实现了学生信息管理系统的增删改查功能。下面将对这些技术及其在项目中的应用进行详细解释。 *...
下面将详细讲解如何利用这些技术实现Web应用的增删改查功能,并针对描述中的“按数据库格式添加数据”进行重点解析。 1. Maven:Maven是一个项目管理和综合工具,它提供了统一的方式来构建、管理和部署Java项目。在...
在本项目中,我们主要利用一系列技术来构建一个完整的Web应用程序,实现对数据库的数据操作,包括增、删、改、查等基本功能。这个项目基于Java后端开发框架,前端UI设计以及Oracle数据库,具体涉及的技术栈有Spring ...
本项目选择了"Maven+SpringBoot+JPA"这一技术栈,旨在提供一个简单的单表操作示例,帮助开发者快速理解如何在Spring Boot环境下使用Maven构建项目,并通过Spring Data JPA实现数据的增删改查功能。 首先,让我们...
总之,"springboot+maven+mybatis实现的项目增删改查实例"是一个很好的学习资源,它帮助初学者理解这三大技术如何协同工作,以及如何构建一个简单的Java Web应用。通过这个实例,开发者可以迅速掌握SpringBoot的便捷...
Springmvc+maven+ajax+jquery+json+mybatis做的登录,注册,增删改查详细注释,大家可以来一下,看看对自己有没有帮助哈,这是我自己一点点的打的,采用MyEclipse 10运行出来.并且付有sql脚本.可直接导入运行.并且经本人...
主要利用IntelliJ IDEA作为集成开发环境,SpringBoot作为核心框架,Maven作为项目构建工具,JPA(Java Persistence API)作为持久层解决方案,以及Thymeleaf作为视图层模板引擎,实现了基本的增删改查(CRUD)功能和...
使用Idea工具开发,Maven+SpringMVC+Mybatis的增删改查Demo,也是根据网上找的demo,自己亲自动手写的,在编写过程也是遇到了各种小问题,不过都一一处理,里面附带了一个简单文档和建表语句,希望对你有所帮助。...
本项目“maven+ssm+redis增删改查小demo”提供了一个基本的示例,展示了如何在SSM基础上利用Redis进行数据的高效存储和检索。 **1. Spring框架** Spring作为Java企业级应用的核心框架,提供了依赖注入(DI)和面向切...
在本项目中,MyBatis作为数据访问层,与数据库进行交互,执行SQL语句,实现了对数据的增删改查操作。通过Mapper接口和XML配置文件,开发者可以方便地编写和执行SQL,同时避免了直接操作JDBC的繁琐。 3. **Maven**:...
在本文中,我们将深入探讨如何使用Spring MVC和Maven构建一个基本的Web应用程序,实现网页上的数据增删改查(CRUD)功能。这适用于初学者,帮助他们快速理解和掌握这两种技术的结合。 首先,Spring MVC是Spring框架...
Ibatis与MySQL的结合,使得开发者能够方便地执行SQL查询,实现数据的增删改查操作。 整合这五个技术的关键在于配置。在Maven的pom.xml文件中,需要定义所有依赖项,确保所有组件的版本兼容。在Spring的配置文件中,...
本项目基于一系列技术栈,包括Spring Boot、MyBatis Plus、Gradle、MySQL和Swagger,实现了一个基础的增删改查(CRUD)功能,并提供了树形查询的能力。下面将详细介绍这些技术及其在项目中的应用。 **1. Spring ...
maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查基础开发框架.maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查基础开发框架.maven、spring、spring mvc、mybatis 整合实现ssm通用增删改查...