jsp之用户管理系统(5,真的是finally)
2016-11-10 19:55
295 查看
源码下载:
这个是韩顺平jsp中的用户管理系统的代码
这个是韩顺平jsp中的用户管理系统的代码
LoginCl.java //这是一个控制器,主要完成对用户身份的验证 //本身并不实际完成身份验证的业务逻辑,而是去调model的业务逻辑完成对数据处理... package com.hao.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hao.model.*; public class LoginCl extends HttpServlet { /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //得到用户名和密码 String username=request.getParameter("username"); //解决无法从数据库中读取中文的解决方法 username=new Tools().getNewStr(username); String password=request.getParameter("password"); //使用模型UserBeanCl,完成对用户身份的验证 //创建UserBeanCl对象 UserBeanCl ubc=new UserBeanCl(); //调用方法 if (ubc.checkUser(username, password)) { //登陆成功!! //这种跳转为转向 //response.sendRedirect("Wel.jsp"); //在跳转到Wel.jsp页面前就要把要显示的数据就要准备好!!! ArrayList al =ubc.fenye(1); int pageCount =ubc.getPageCount(); //将al pageCount放入request中... request.setAttribute("al", al); request.setAttribute("pageCount", pageCount); request.setAttribute("pageNow", 1); //因为sendRedirect跳转的效率不高,在公司里常常用转发的方法.... //这种转发效率高,并且request中的对象还可以在下个页面中使用 //将用户名放入session以备后用 request.getSession().setAttribute("username", username); request.getSession().setMaxInactiveInterval(300); //在本案例中request对象指的是上面的两句话result和pageCount request.getRequestDispatcher("main.jsp").forward(request, response); } else { //登录失败!!! //response.sendRedirect("Login.jsp"); request.getRequestDispatcher("Login.jsp").forward(request, response); } } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } UserClServlet.java //处理用户的分页显示 //也用于处理用户的增删改 package com.hao.controller; import java.io.IOException; import com.hao.model.*; import java.io.PrintWriter; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UserClServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建一个UserBeanCl方法,供全局调用!!! UserBeanCl ubc =new UserBeanCl(); //得到标志位,判断进行不同的操作.. String flag=request.getParameter("flag").toString(); //情况一:分页管理 if(flag.equals("fenye")) { try { //得到pageNow int pageNow =Integer.parseInt(request.getParameter("pageNow").toString()); //在跳转到Wel.jsp页面前就要把要显示的数据就要准备好!!! ArrayList al =ubc.fenye(pageNow); int pageCount =ubc.getPageCount(); //将al pageCount放入request中... //说明这里写成setAttribute那么在下也就要用getAttribute来接受 //如果是参数就要用getParameter来接受,不能搞混咯!!!! request.setAttribute("pageCount", pageCount+""); request.setAttribute("al", al); request.setAttribute("pageNow", pageNow); //重新跳回Wel.jsp request.getRequestDispatcher("Wel.jsp").forward(request, response); } catch (Exception ex) { ex.printStackTrace(); } finally { //System.out.println("这是UserClServlet的测试finally"); } } //情况二:删除用户 else if(flag.equals("delUser")) { String userId=request.getParameter("userId"); if (ubc.delUser(userId)) { request.getRequestDispatcher("Succ.jsp").forward(request, response); } else { request.getRequestDispatcher("Fail.jsp").forward(request, response); } } //情况三:添加用户 else if(flag.equals("addUser")) { //得到用户输入的信息.. String username=request.getParameter("username"); String password=request.getParameter("password"); String email=request.getParameter("email"); String grade=request.getParameter("grade"); if (ubc.addUser( username, password , email , grade )) { request.getRequestDispatcher("Succ.jsp").forward(request, response); } else { request.getRequestDispatcher("Fail.jsp").forward(request, response); } } //情况四:添加用户 else if(flag.equals("updateUser")) { //得到用户输入的信息.. String userid =request.getParameter("userid"); String username=request.getParameter("username"); String password=request.getParameter("password"); String email=request.getParameter("email"); String grade=request.getParameter("grade"); if (ubc.updateUser( userid , username, password , email , grade)) { request.getRequestDispatcher("Succ.jsp").forward(request, response); } else { request.getRequestDispatcher("Fail.jsp").forward(request, response); } } } } ConDB.java //当一段代码被使用三次以上就应该把这样的代码封装到一个函数里面 package com.hao.model; import java.sql.*; public class ConDB { private Connection ct=null; public Connection getct() { Connection con=null; try { //1加载驱动 String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb"; Class.forName(driver); con =DriverManager.getConnection (url,"sa","hao123"); } catch (Exception ex) { ex.printStackTrace(); } finally { return con ; } } } Tools.java package com.hao.model; public class Tools { //提供一个方法,将乱码转换成gb2312... public static String getNewStr(String input) { String result=""; try { result=new String (input.getBytes("iso-8859-1"),"gb2312"); } catch(Exception ex) { ex.printStackTrace(); } return result; } } UserBean.java //这是一个javaBean对应Users表数据. //表中有几个字段,那么这个java中就有多少个私有属性 //他的一个实例代表一个USers表中的一条记录. package com.hao.model; public class UserBean { private int userId; private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } private String passwd; private String email; private int grade; public void setUserId(int userId) { this.userId = userId; } public int getUserId() { return userId; } } UserBeanCl.java //这是一个处理类,有些人喜欢把它叫做BO business object //主要是封装users表的各种操作[增加\删除\修改\查询]. package com.hao.model; import java.sql.*; import java.util.*; public class UserBeanCl { private Connection ct =null; private Statement sm =null; private ResultSet rs =null; private int pageSize=3; private int rowCount=0;//从数据库中得到 private int pageCount =0;//一共有多少页 通过pageSize和rowCount获得. //修改用户 public boolean updateUser(String userid ,String username,String password ,String email ,String grade) { boolean b=false; try { ct=new ConDB().getct(); sm=ct.createStatement(); int a=sm.executeUpdate("update users set username='" +username+"',passwd='"+password+"',email='"+email+"',grade='"+grade+"' where userId = "+userid); if(a==1) { b=true; } } catch (Exception e) { e.printStackTrace(); } return b; } //添加用户 /** * @author haofengli * @return 如果为真,说明添加成功;否则,添加失败 * @param username 用户名 * @param password 密码 */ public boolean addUser(String username,String password ,String email ,String grade) { boolean b=false; try { ct=new ConDB().getct(); sm=ct.createStatement(); int a=sm.executeUpdate("insert into users values ('" +username+"','"+password+"','"+email+"','"+grade+"')"); if(a==1) { b=true; } } catch (Exception e) { e.printStackTrace(); } return b; } //删除用户 public boolean delUser(String userId) { boolean b=false; try { ct=new ConDB().getct(); sm=ct.createStatement(); int a=sm.executeUpdate("delete from users where userid = '"+userId+"'"); if(a==1) { b=true; } } catch (Exception e) { e.printStackTrace(); } return b; } //得到总页数 public int getPageCount() { try { //得到连接 ct =new ConDB().getct(); //3创建Statement sm=ct.createStatement(); //4查询 rs=sm.executeQuery("select count(*) from users "); if(rs.next()) { rowCount =rs.getInt(1); //计算pageCount pageCount=(rowCount+pageSize-1)/pageSize; } } catch (Exception ex) { ex.printStackTrace(); } finally { this.closed(); } return pageCount ; } //分页函数 public ArrayList fenye ( int pageNow) { ArrayList al =new ArrayList(); try { //得到连接 ct =new ConDB().getct(); //3创建Statement sm=ct.createStatement(); //查询出需要显示的记录. rs=sm.executeQuery("select top "+pageSize +" * from users where userid not in ( select top "+pageSize*(pageNow-1)+" userid from users )"); while(rs.next()) { UserBean ub =new UserBean(); ub.setUserId(rs.getInt(1)); ub.setUserName(rs.getString(2)); ub.setPasswd(rs.getString(3)); ub.setEmail(rs.getString(4)); ub.setGrade(rs.getInt(5)); //将ub放进al中 al.add(ub); } } catch (Exception ex) { ex.printStackTrace(); } finally { this.closed(); return al; } } //验证用户是否存在! public boolean checkUser (String u,String p) { boolean b=false; String sql ="select top 1 passwd from users where username ='"+u+"'"; try { //得到连接 ct=new ConDB().getct(); sm =ct.createStatement(); rs=sm.executeQuery(sql); if(rs.next()) { if(rs.getString(1).equals(p)) { b=true; } } } catch (Exception ex) { ex.printStackTrace(); } finally { this.closed(); } return b; } //关闭资源 public void closed() { try { if(rs!=null){rs.close(); rs=null;} if(sm!=null){sm.close(); sm=null;} if(ct!=null){ct.close(); ct =null;} } catch(Exception ex) { ex.printStackTrace(); } } } Adduser.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'AddUser.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <hr> <center> <h1 >添加用户</h1> <form action="UserClServlet?flag=addUser" method="post"> <table> <tr bgcolor="silver"><td>用户名:</td><td> <input type="text" name="username"/></td></tr> <tr bgcolor="silver"><td>密码:</td><td> <input type="text" name="password"/></td></tr> <tr bgcolor="silver"><td>电子邮件:</td><td> <input type="text" name="email"/></td></tr> <tr bgcolor="silver"><td>级别:</td><td> <input type="text" name="grade"/></td></tr> </table> <input type="Submit" name="button1" value="确定"/> <input type="reset" name="button2" value="重置"> </form> </center> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> Fail.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Fail.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <center> 操作失败!!<br><hr> <a href="main.jsp">返回主界面</a> </center> <!--引入一张图片 小乌龟的图片 --> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> Login.java <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <center> 用户登录<br><hr> <!-- 注意了,虽然的servlet这里的有一个/但是在这里的action中不能加/ --> <form action="LoginCl" method="post"> 用户名:<input type="text" name="username" size="16"/><br> 密 码:<input type="password" name="password" size="16"/><br> <input type ="submit" value="提交" /> <input type="reset" value ="重置"/> </form> </center> <!--引入一张图片 小乌龟的图片 --> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> LoginCl.jsp <%@ page language="java" import="java.util.*,java.sql.*,com.hao.model.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'LoginCl.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <!-- 接受用户名与密码 --> <% String username= request.getParameter("username"); String password= request.getParameter("password"); //调用UserBeanCl的checkUser方法. UserBeanCl ubc =new UserBeanCl(); if(ubc.checkUser(username,password)==true) { response.sendRedirect("Wel.jsp"); } else { response.sendRedirect("Login.jsp"); } %> </body> </html> main.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <center> <h1>请选择您的操作</h1><hr/> <a href="UserClServlet?pageNow=1&flag=fenye">管理用户</a><br> <a href="AddUser.jsp">添加用户</a><br> <a href="#">查找用户</a><br> <a href="#">注销用户</a><br> </center> <!--引入一张图片 小乌龟的图片 --> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> Succ.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Succ.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <center> 操作成功!!<br><hr> <a href="main.jsp">返回主界面</a> </center> <!--引入一张图片 小乌龟的图片 --> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> UpdateUser.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'UpdateUser.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <!-- 引入一张图片 --> <img src="images/myLogo.gif"></img> <hr> <center> <h1 >修改用户</h1> <form action="UserClServlet?flag=updateUser" method="post"> <table> <tr bgcolor="silver"><td>用户编号:</td><td> <input type="text" name="userid" readonly="readonly" value="<%=request.getParameter("userid") %>"/></td></tr> <tr bgcolor="silver"><td>用户名:</td><td> <input type="text" name="username" value="<%=request.getParameter("username") %>"/></td></tr> <tr bgcolor="silver"><td>密码:</td><td> <input type="text" name="password" value="<%=request.getParameter("password") %>"/></td></tr> <tr bgcolor="silver"><td>电子邮件:</td><td> <input type="text" name="email" value="<%=request.getParameter("email") %>"/></td></tr> <tr bgcolor="silver"><td>级别:</td><td> <input type="text" name="grade" value="<%=request.getParameter("grade") %>"/></td></tr> </table> <input type="Submit" name="button1" value="确定"/> <input type="reset" name="button2" value="重置"> </form> </center> <hr> <!-- 图片可以直接拖过来接可以了 --> <img src="images/logoleft.gif"></img> </body> </html> Wel.jsp <%@ page language="java" import="java.util.*,java.sql.*, com.hao.model.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Wel.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="#ced3fc"> <img src="images/myLogo.gif"></img><hr> 恭喜<%=session.getAttribute("username").toString() %>!登陆成功!!! <br> <a href ="Login.jsp">返回重新登录</a> <a href ="main.jsp">返回主界面</a> <center> <h1>用户信息列表</h1> <% int pageNow =Integer.parseInt(request.getAttribute("pageNow").toString()); int pageCount =Integer.parseInt(request.getAttribute("pageCount").toString()); ArrayList al=(ArrayList)request.getAttribute("al"); %> <table border=1> <tr bgcolor="blue"> <td>用户编号</td> <td>用户名</td> <td>用户密码</td> <td>电子邮件</td> <td>等级</td> <td>修改用户</td> <td>删除用户</td> </tr> <% String color[] ={"pink","silver"}; for (int i =0;i<al.size();i++) { //从al中取出UserBean UserBean ub =(UserBean)al.get(i); %> <tr bgcolor="<%=color[i%2] %>"> <td><%=ub.getUserId()%></td> <td><%=ub.getUserName() %></td> <td><%=ub.getPasswd() %></td> <td><%=ub.getEmail() %></td> <td><%=ub.getGrade() %></td> <td><a href="UpdateUser.jsp?userid=<%=ub.getUserId() %>&username=<%=ub.getUserName() %>&password=<%=ub.getPasswd() %>&email=<%=ub.getEmail() %>&grade=<%=ub.getGrade() %>">修改用户</a></td> <td><a href="UserClServlet?flag=delUser&userId=<%=ub.getUserId() %>">删除用户</a></td> </tr> <% } %> </table> <!-- 上一页 --> <% if (pageNow!=1) { %> <!-- 第一页 --> <a href=UserClServlet?pageNow=1&flag=fenye>第一页</a> <a href=UserClServlet?pageNow=<%=pageNow-1 %>&flag=fenye>上一页</a> <% } %> <% //显示超链接 for (int i=1;i<=pageCount;i++) { %> <a href=UserClServlet?pageNow=<%=i %>&flag=fenye> <%=i %> </a> <% } %> <!-- 下一页 --> <% if (pageNow!=pageCount) { %> <a href=UserClServlet?pageNow=<%=pageNow+1 %>&flag=fenye>下一页</a> <!-- 最后一页 --> <!--声明:这里的sevlet转跳一定不能加/写成/UserClServlet?否则就错了!!! --> <a href=UserClServlet?pageNow=<%=pageCount %>&flag=fenye>最后一页</a> <% } %> </center> <hr> <img src="images/logoleft.gif"></img> </body> </html>
相关文章推荐
- JSP用户管理系统1.0
- jsp之简单的用户管理系统(4,mvc模式)
- JSP用户管理系统2.0
- 基于jsp+servlet图书管理系统之后台用户信息删除操作
- jsp之简单的用户管理系统(2)
- JSP+Servlet培训班作业管理系统[13] -使用基于Action的后端(用户登录为例)
- 基于jsp+servlet图书管理系统之后台用户信息修改操作
- 关系管理系统:显示所有用户jsp页面
- jsp之用户管理系统(3)
- 项目(1)----用户信息管理系统(5)---(剩余jsp界面)
- JSP+Servlet培训班作业管理系统[4]-记录登录用户信息
- JSP第一个实例之用户管理系统
- 基于jsp+servlet图书管理系统之后台用户信息删除操作
- 基于jsp+servlet图书管理系统之后台用户信息查询操作
- jsp入门案例 用户管理系统 mvc模式
- 关系管理系统:更新用户jsp页面
- JSP用户管理系统【上学应付作业用】
- 基于jsp+servlet图书管理系统之后台用户信息插入操作
- 用户权限设计(三)——通用数据权限管理系统设计【转】
- SCO UNIX 系统管理/用户/口令