maven+ssi对oracle实现增删改查(二)

本文详细介绍了用户管理系统中涉及到的页面布局、交互逻辑、后台处理逻辑以及登录流程的实现方式,包括用户注册、登录、注销、用户信息展示与修改等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.index.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>

详细的见附件,里面包括源码和数据库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值