• servlet+jsp完成简单登录


    将用户在注册界面中的数据填充到数据库相对应的表格中。当用户再次登录时,从数据库中拿到相应的数据查询并与页面的数据做对比,判断是否登陆成功。

    需要在HTML文件中将form表单上的action属性值设置为web项目名加处理数据的servlet文件。

    1.导入相应的jar包,MySQL,c3p0,BeanUtils,页面的文件和图片等。

    2.按照数据库中表单的相应数据创建JavaBean

    3.设置相对应的编码格式

    4.利用BeanUtils.populate(user,map名称)将注册表单的信息与javaBean对象形成一一对应关系(工作原理:将map中key的名字与实体属性的名字对比user,如果一样就将map的value封装到实体user中去)

    5.编写业务将user对象作为参数传给register方法,连接数据库,编写SQL语句,执行update方法。

    post提交乱码问题的解决方法:

    Request.setCharacterEncoding("UTF-8");

    get提交遇到乱码问题

    1.拿到乱码的字段

    2.将乱码设置成iso8859-1编码格式,

    3.在将编码后的用utf-8解码

    例如:username输入中文时遇到乱码,将username=new String(username.getBytes("iso8859-1"),"utf-8");

    这种解决方式同样适用于post提交。

    注册用户核心代码:

    
    
    有关的servlet核心代码如下:
    
    Protected  void   doPost(HttpServletRequestrequest,HttpServletResponseresponse)throws    ServletException,IOException{
    //设置编码格式
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    
    //获得提交的参数返回一个map集合,并通过beanutils.populate方法将参数映射到一个user对象中
    Map<String,String[]> map = request.getParameterMap();
    
    User user=new User();
    try{
    BeanUtils.populate (user,map);
    }catch(IllegalAccessExceptione){
    e.printStackTrace();
    }catch(InvocationTargetExceptione){
    e.printStackTrace();
    }
    //设置随机ID
    user.setUID(UUID.randomUUID().toString());
    //编写业务代码,用Druid连接数据库,插入数据
    
    Properties properties=new Properties();
    properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("properties.properties"));
    
    DataSource dataSource = null;
    try{
    dataSource = DruidDataSourceFactory.createDataSource(properties);
    }catch(Exceptione){
    e.printStackTrace();
    }
    
    QueryRunner queryRunner= new QueryRunner(dataSource);
    String sql="insert into register_user  values(?,?,?,?,?,?,?,?)";
    Int  i=0;
    try{
    i=queryRunner.update(sql,user.getUID(),user.getUsername(),user.getPassword()
    ,user.getEmail(),user.getName(),user.getTelephone(),user.getSex(),user.getBirthday());
    }catch(SQLExceptione){
    e.printStackTrace();
    }
    if(i==1){
    //注册成功,重定向到登录界面
    response.sendRedirect("login.jsp");
    }else{
    //注册失败,转发并显示错误信息
    response.getWriter().println("注册失败!");
    }
    

    登录页面:<formaction="LoginServlet"method="POST">

    核心代码:

    <divclass="lg_m_1">
    
    <fontsize="3px">用户名:</font><inputname="username"value=""type="text"class="ur"placeholder="请输入用户名"/></br>
    <fontsize="3px">密码:</font><inputname="password"type="password"value=""class="pw"placeholder="请输入密码"/>
    <divstyle="height:20px">
    <%-- 错误信息显示 --% >
    &nbsp;&nbsp;&nbsp;
    <%=request.getAttribute("loginError")==null?"":request.getAttribute("loginError")%>
    </div>
    <label><inputtype="checkbox">自动登录
    </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<label><input
    type="checkbox">记住用户名
    </label>

    loginServlet核心代码:

     @WebServlet("/LoginServlet")
     Public class LoginServlet extends HttpServlet{
     Protected void doPost  (HttpServletRequest request,HttpServletResponse response)throws      ServletException,IOException{
    
     response.setContentType("text/html;charset=UTF-8");
     request.setCharacterEncoding("UTF-8");
    
     //1.获取登陆时的参数
     String username=request.getParameter("username");
     String password=request.getParameter("password");
    
     //2.与数据库的数据对比
    
    
    
     //3.如果登陆成功,重定向首页,失败,转发提示登录错误信息
     User login=login(username,password);
     if(login==null){
     request.setAttribute("loginError","用户名或密码错误!");
     request.getRequestDispatcher("login.jsp").forward(request,response);
     }else{
    	 response.sendRedirect(request.getContextPath());
     }
    
     }
    
     Protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
     doPost(request,response);
     }
    
     Public User login(String username,String password){
     Properties properties=new Properties();
     try{
     properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("properties.properties"));
     }catch(IOExceptione){
     e.printStackTrace();
     }
    
     DataSource dataSource=null;
     try{
     dataSource=DruidDataSourceFactory.createDataSource(properties);
     }catch(Exceptione){
      e.printStackTrace();
     }
    
     QueryRunner queryRunner=new QueryRunner(dataSource);
    
     String sql="select*from register_user where    username=? And password=?";
     User user=null;
     try{
      user=queryRunner.query(sql,new BeanHandler<User>(User.class),username,password);
      }catch(SQLExceptione){
      e.printStackTrace();
      }
     return user;
      }
    
  • 相关阅读:
    前端学习笔记之闭包——看了一张图终于明白啥是闭包了
    前端学习笔记之闭包——看了一张图终于明白啥是闭包了
    前端学习笔记之闭包——看了一张图终于明白啥是闭包了
    前端学习笔记之闭包——看了一张图终于明白啥是闭包了
    Unity碰撞检测
    Unity碰撞检测
    Unity碰撞检测
    Unity碰撞检测
    关于JavaScript中事件的一些重要说明
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14122003.html
Copyright © 2020-2023  润新知