`
fantlam
  • 浏览: 99050 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

我的SSH项目之旅(4.用户登陆及密码操作)

阅读更多

如果出现mysql乱码问题 修改my.ini两处红色的地方gb2312

[client]



port=3306



[mysql]



default-character-set=gb2312





# SERVER SECTION

# ----------------------------------------------------------------------

#

# The following options will be read by the MySQL Server. Make sure that

# you have installed the server correctly (see above) so it reads this

# file.

#

[mysqld]



# The TCP/IP Port the MySQL Server will listen on

port=3306





#Path to installation directory. All paths are usually resolved relative to this.

basedir="E:/compiler/mysql/"



#Path to the database root

datadir="E:/compiler/mysql/Data/"



# The default character set that will be used when a new schema or table is

# created and no character set is defined

default-character-set=gb2312







登陆模块

可以仿照注册模块,所以问题不多,出现的错误主要都是页面呈现不出,也就是struts标签的错误,一点小差错就会导致页面呈现不出,我想也只能对照正确的页面看自己到底有什么写错了

UserDAOImpl.java

 

 public boolean login(User user) throws Exception {

    // TODO Auto-generated method stub

    boolean flag=false;

    String hql="from User as u where u.userid=? and u.userpwd=?";

    Query q=super.getSession().createQuery(hql);

    q.setString(0, user.getUserid());

    q.setString(1, user.getUserpwd());

    List l=q.list();

    if(l.size()>0){

      flag=true;

      User u=(User)l.get(0);

      user.setGrade(u.getGrade());取得等级

      

    }

    return flag;

  }



 

UserAction.java

 

 

public ActionForward login(ActionMapping mapping, ActionForm form,

      HttpServletRequest request, HttpServletResponse response) {

    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub

// 首先还是验证输入验证码是否正确

  String ccode = (String) request.getSession().getAttribute("ccode");

  String checkcode = userForm.getCheckcode();

  if (!(ccode.equals(checkcode))) {

      ActionMessages errors = new ActionMessages();

      errors.add("ccode", new ActionMessage("checkcode.error"));

      super.saveErrors(request, errors);

      return mapping.getInputForward();

    }

    User user=new User();

    MD5Code mc = new MD5Code();

    user.setUserid(userForm.getUserid());

    user.setUserpwd(mc.getMD5ofStr(userForm.getUserpwd()));

  boolean flag=false;

  try {

  flag=this.userdao.login(user);

  if(flag){

  request.getSession().setAttribute("userid", user.getUserid());

  request.getSession().setAttribute("grade", user.getGrade());

  return mapping.findForward("loginsuc");

  }else{

  request.setAttribute("flag", "error");

  return mapping.findForward("loginfail");

  }

    } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      return mapping.findForward("loginfail");

      

    }

  }

 

 

 login.jsp   依然利用模板建立

<body>
<center>
<jsp:include flush="true" page="../inc/template.html"/>

<logic:present name="flag" scope="request">
<logic:equal value="error" name="flag" scope="request">
<h2>登陆失败,错误的用户名或密码</h2>
</logic:equal>
</logic:present>

<h1>用户登陆</h1>
<html:form action="jsp/user.do" method="post">
用户ID<html:text property="userid"></html:text><br>
登陆密码:<html:password property="userpwd"></html:password><br>
验证码:<html:text property="checkcode"></html:text><img src="image.jsp"><br>
<input type="hidden" name="status" value="login">
<input type="hidden" name="type" value="2">
<html:submit value="登陆"></html:submit>
<html:reset value="重置"></html:reset><br>
<a href="register.jsp">注册用户?</a>
<a href="forgetpwd.jsp">忘记密码?</a>
</html:form>
</center>

</body>



接下来是找回密码和更新密码模块

UserDAO.java接口

// 找回密码 允许用户修改密码
public void updatepwd(String userid,String userpwd) throws Exception;
// 根据提示问题 答案 用户ID 确认用户是否存在
public boolean isExists(String userid, String userques, String userans)

      throws Exception;



UserDAOImpl.java 实现这样两个方法

public boolean isExists(String userid, String userques, String userans)
      throws Exception {
    // TODO Auto-generated method stub
    boolean flag = false;
    String hql = "from User as u where u.userid=? and u.userques=? and u.userans=?";
    Query q = super.getSession().createQuery(hql);
    q.setString(0, userid);
    q.setString(1, userques);
    q.setString(2, userans);
    List l=q.list();
    if(l.size()>0){
      flag=true;
     
        }
    return flag;
  }

  public void updatepwd(String userid,String userpwd) throws Exception {
    // TODO Auto-generated method stub
    String hql="update User set userpwd=? where userid=?";
    Query q=super.getSession().createQuery(hql);
    q.setString(0, userpwd);
    q.setString(1, userid);
    q.executeUpdate();

  }

UserAction.java

  public ActionForward forget(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response) {
    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    boolean flag = false;
    try {
      flag = this.userdao.isExists(userForm.getUserid(), userForm
            .getUserques(), userForm.getUserans());
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    if(flag){

//设置一个flag值保存在request范围让jsp页面做判断输出应有的信
      request.setAttribute("flag", "true");

      return mapping.findForward("exist");
     
    }else{
      request.setAttribute("flag", "false");
      return mapping.findForward("notexist");
     
    }
   
  }

  public ActionForward updatepwd(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response) {
    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    MD5Code m=new MD5Code();
    String userid=userForm.getUserid();
    String userpwd=m.getMD5ofStr(userForm.getUserpwd());
    try {
      this.userdao.updatepwd(userid, userpwd);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return mapping.findForward("updatepwddo");

  }



forgetpwd.jsp

<h2>忘记密码</h2>
<%-- 用户不存在或问题或答案错误--%>
<logic:present name="flag" scope="request">
<logic:equal value="false" name="flag">
<h3>用户不存在或问题或答案错误</h3>
</logic:equal>
</logic:present>
<html:form action="jsp/user.do" method="post">
用户ID<html:text property="userid"></html:text><br>
找回密码提示问题:<html:text property="userques"></html:text><br>
找回密码答案:<html:text property="userans"></html:text><br>
验证码:<html:text property="checkcode"></html:text><img src="image.jsp"><br>
<input type="hidden" name="status" value="forget"><br>
<input type="hidden" name="type" value="3"><br>
<html:submit value="找回密码"></html:submit>
<html:reset value="重置"></html:reset>
</html:form>
加入这段javascript脚本可以让验证码在返回的时候留空
  <script language="javaScript">
    document.userForm.checkcode.value = "" ;

  </script>



Updatepwd.jsp

<logic:present name="flag" scope="request">
<logic:equal value="true" name="flag" scope="request">
<h2>更新密码</h2>
<html:form action="jsp/user.do">
新的密码:<html:password property="userpwd"></html:password><br>
确认密码:<html:password property="confirmpwd"></html:password><br>
验证码:<html:text property="checkcode"></html:text><img src="image.jsp"><br>
<input type="hidden" name="status" value="updatepwd">
<input type="hidden" name="type" value="4">
<input type="hidden" name="userid" value="${param.userid}">
<html:submit value="更新"></html:submit>
<html:reset value="重置"></html:reset><br>
<a href="login.jsp">用户登陆?</a>
<a href="register.jsp">用户注册?</a>
</html:form>
  <script language="javaScript">
    document.userForm.checkcode.value = "" ;
  </script>
</logic:equal>

</logic:present>





欢迎fantlam光临 头衔:开发爱好者


index.jsp

<logic:present name="userid" scope="session">
欢迎${userid}光临
头衔:<%=IntegralGrade.getInstance().getGradeInfo((Integer)session.getAttribute("grade")) %>

</logic:present>


IntegralGrade类就不写了

往下层目录建立JSP页面的时候出现路径问题
<jsp:include flush="true" page="../../inc/template.jsp">
<jsp:param name="url" value="../../" />
通过传参方式让不同层次目录的JSP根据自己的情况找到模板上制定的路径
<jsp:param name="image" value="../"/>
</jsp:include>

template.jsp中相关代码
<img src="${param.url}images/banner_logo.gif" alt="fantlam"

src="${param.url}images/banner_ico06.jpg" alt="我要提问" border="0">
   
<a href="${param.image}login.jsp">
src="${param.url}images/banner_ico05.jpg" alt="我要登录" border="0">
login.jsp   依然利用模板建立

<body>
<center>
<jsp:include flush="true" page="../inc/template.html"/>

<logic:present name="flag" scope="request">
<logic:equal value="error" name="flag" scope="request">
<h2>登陆失败,错误的用户名或密码</h2>
</logic:equal>
</logic:present>

<h1>用户登陆</h1>
<html:form action="jsp/user.do" method="post">
用户ID<html:text property="userid"></html:text><br>
登陆密码:<html:password property="userpwd"></html:password><br>
验证码:<html:text property="checkcode"></html:text><img src="image.jsp"><br>
<input type="hidden" name="status" value="login">
<input type="hidden" name="type" value="2">
<html:submit value="登陆"></html:submit>
<html:reset value="重置"></html:reset><br>
<a href="register.jsp">注册用户?</a>
<a href="forgetpwd.jsp">忘记密码?</a>
</html:form>
</center>
</body>



接下来是找回密码和更新密码模块

UserDAO.java接口

// 找回密码 允许用户修改密码
public void updatepwd(String userid,String userpwd) throws Exception;
// 根据提示问题 答案 用户ID 确认用户是否存在
public boolean isExists(String userid, String userques, String userans)
      throws Exception;



UserDAOImpl.java 实现这样两个方法

public boolean isExists(String userid, String userques, String userans)
      throws Exception {
    // TODO Auto-generated method stub
    boolean flag = false;
    String hql = "from User as u where u.userid=? and u.userques=? and u.userans=?";
    Query q = super.getSession().createQuery(hql);
    q.setString(0, userid);
    q.setString(1, userques);
    q.setString(2, userans);
    List l=q.list();
    if(l.size()>0){
      flag=true;
     
        }
    return flag;
分享到:
评论

相关推荐

    x11-ssh-askpass-1.2.4.1.tar.gz

    SSH Askpass是一个辅助程序,当SSH需要用户密码时,它会在一个弹出窗口中提示用户输入。在无头服务器或使用终端模拟器时,这个功能尤其有用,因为它避免了在命令行中明文输入密码的风险,提高了安全性。x11-ssh-...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...

    Node.js-WebSSH2基于Web的SSH2客户端使用xterm.jssocket.io和ssh2实现

    在WebSSH2项目中,xterm.js是用户与远程服务器交互的界面,用户可以在这个终端中输入命令并查看返回的结果。 其次,socket.io是一个实时应用程序库,它在客户端和服务器之间提供了双向通信。在WebSSH2中,socket.io...

    利用ch.ethz.ssh2操作

    利用ch.ethz.ssh2操作进行SSH进行操作下载文件代码,主要利用Linux命令进行操作,方便简单

    DameWare-SSH.Client.for.Windows-DWS.zip

    7. **安全性考虑**:使用SSH客户端时,用户应确保使用强密码、定期更新密钥、避免在不安全的网络环境下进行敏感操作,以保护自身网络安全。 8. **许可证和费用**:作为Shareware,DameWare SSH Client可能有一个...

    SSH框架Maven项目pom.xml

    SSH框架Maven项目pom.xml

    postgres用户下ssh无密码登录

    Postgres用户下SSH无密码登录 SSH(Secure Shell)是一种安全的远程登录协议,用于远程管理Linux系统。 SSH无密码登录是指在两台服务器之间,不需要输入密码便可实现登录的功能。本文将详细介绍Postgres用户下SSH...

    SSH客户端软件SshClient.rar

    4. **密钥认证**:SSH支持公钥/私钥对的认证方式,用户可以生成一对密钥,将公钥放在远程服务器上,私钥保留在本地。这样每次连接时,只需要验证私钥,无需输入密码,提高了便利性和安全性。 5. **多会话管理**:...

    SSH登陆LINUX服务器命令.doc

    以下是对SSH登陆LINUX服务器常用命令的详细说明: 1. **基本SSH登录命令**: 使用`ssh [hostname] -u user`来登录远程Linux服务器,其中`hostname`是服务器的IP地址或域名,`user`是你要登录的用户名。例如:`ssh ...

    ssh实战项目.zip

    9. **SSH代理**:SSH代理(SSH Agent)可以缓存已验证的密钥,避免重复输入私钥密码,方便多台服务器之间的操作。 10. **SSH会话管理**:`screen`或`tmux`工具可以创建多窗口会话,即使远程连接断开,程序也会在...

    用IDEA创建一个SSH项目.doc

    IDEA 中创建 SSH 项目的详细步骤和配置 在本文中,我们将详细介绍如何使用 IDEA 创建一个 SSH 项目,包括项目的创建、配置和启动过程。 创建 Maven Web 项目 首先,我们需要在 IDEA 中创建一个新的 Maven 项目。...

    ssh调试软件PuTTY Configuration.rar

    用户运行这个文件后,可以输入目标服务器的IP地址、端口号、用户名和密码,建立安全的加密连接,实现对远程主机的命令行操作。PuTTY的配置项丰富,允许用户自定义终端类型、字体大小、颜色,甚至可以保存常用的会话...

    Linux下限制SSH登陆以及密码策略

    "Linux下限制SSH登陆以及密码策略" 在 Linux 系统中,限制 SSH 登陆和设置密码策略是非常重要的安全措施。下面我们将详细介绍如何限制 SSH 远程 root 登陆和设置密码策略。 一、限制 SSH 远程 root 登陆 在 Linux...

    ssh用户登陆代码

    7. **加强安全性**:为了提高SSH的安全性,可以禁用密码登录,只允许公钥认证,并限制可登录的用户。这些配置可以在`/etc/ssh/sshd_config`文件中进行。 8. **自动化脚本登录**:在自动化脚本中使用SSH,如监控或...

    login.rar_SSH登陆_java ssh_site:www.pudn.com_ssh_登陆

    SSH登陆程序SSH登陆程序SSH登陆程序SSH登陆程序

    j2ssh-core-0.2.2.jar

    SSHTools是一组Java SSH应用程序。包括:Java SSH API, SSH Terminal, SSH secured VNC客户端, SFTP客户端和SSH Daemon。ESftp是根据此项目开发的一个Eclipse插件主要用来在Eclipse开发平台与Sftp服务器之间传输文件...

    ganymed-ssh2-262.jar

    标题中的“ganymed-ssh2-262.jar”是一个特定版本的SSH2库,由Ganymed项目提供,用于Java环境下的SSH(Secure Shell)连接。SSH是一种网络协议,常用于安全地远程登录到服务器、传输文件以及执行命令。Ganymed SSH2...

    PyPI 官网下载 | ssh4p-0.0.11.tar.gz

    《PyPI官网下载:ssh4p-0.0.11.tar.gz——深入解析Python库》 在Python的世界里,PyPI(Python Package Index)扮演着至关重要的角色,它是Python开发者分享和获取开源软件包的主要平台。本次我们将聚焦于一个名为...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

Global site tag (gtag.js) - Google Analytics