怪力豆 2023-05-18 21:30 采纳率: 83.3%
浏览 22
已结题

如何对下面的代码(用户登录)进行Junit测试呢?


package handle.data;
import save.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class HandleLogin extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void service(HttpServletRequest request,
                       HttpServletResponse response) 
                       throws ServletException,IOException{
      request.setCharacterEncoding("utf-8");
      Connection con =null; 
      Statement sql; 
      String logname=request.getParameter("logname").trim(),
      password=request.getParameter("password").trim();
      password = Encrypt.encrypt(password,"javajsp");//给用户密码加密。
      boolean boo=(logname.length()>0)&&(password.length()>0);  
      try{ 
           Context  context = new InitialContext();
           Context  contextNeeded=
                    (Context)context.lookup("java:comp/env");
           DataSource ds=
           (DataSource)contextNeeded.lookup("adverConn");//连接池。
            con= ds.getConnection();//使用连接池中的连接。
           String condition="select * from user where logname = '"+
                             logname+"' and password ='"+password+"'";
           sql=con.createStatement();  
           if(boo){
              ResultSet rs=sql.executeQuery(condition);
              boolean m=rs.next();
              if(m==true){ 
                  //调用登录成功的方法:
                  success(request,response,logname,password); 
                  RequestDispatcher dispatcher=
                  request.getRequestDispatcher("login.jsp");//转发。
                  dispatcher.forward(request,response);
              }
              else{
                  String backNews="您输入的用户名不存在,或密码不般配";
                  //调用登录失败的方法:
                  fail(request,response,logname,backNews); 
              }
           }
           else{
                  String backNews="请输入用户名和密码";
                  fail(request,response,logname,backNews);
           }
           con.close();//连接返回连接池。
      }
      catch(SQLException exp){
          String backNews=""+exp;
          fail(request,response,logname,backNews);
      }
      catch(NamingException exp){
          String backNews="没有设置连接池"+exp;
          fail(request,response,logname,backNews); 
      }
      finally{
        try{
            con.close();
        }
        catch(Exception ee){}
      } 
   }
   public void success(HttpServletRequest request,
                       HttpServletResponse response,
                       String logname,String password) {
      Login loginBean=null;
      HttpSession session=request.getSession(true);
      try{  loginBean=(Login)session.getAttribute("loginBean");
            if(loginBean==null){
               loginBean=new Login();  //创建新的数据模型 。
               session.setAttribute("loginBean",loginBean);
               loginBean=(Login)session.getAttribute("loginBean");
            }
            String name =loginBean.getLogname();
            if(name.equals(logname)) {
                loginBean.setBackNews(logname+"<a href =首页2.html>已经登录了 点此进入首页</a>");
               loginBean.setLogname(logname);
               
            }
            else {  //数据模型存储新的登录用户:
                loginBean.setBackNews(logname+"<a href =首页2.html>登录成功 点此进入首页</a>");
                loginBean.setLogname(logname);
            }
      }
      catch(Exception ee){
            loginBean=new Login();  
            session.setAttribute("loginBean",loginBean);
            loginBean.setBackNews(""+ee);
            loginBean.setLogname(logname);
      }
   }
   public void fail(HttpServletRequest request,
                    HttpServletResponse response,
                    String logname,String backNews) {
        response.setContentType("text/html;charset=utf-8");
        try {
            PrintWriter out=response.getWriter();
            out.println("<html><body>");
            out.println("<h2>"+logname+"登录反馈结果<br>"+backNews+"</h2>") ;
            out.println("返回登录页面或主页<br>");
            out.println("<a href =login.jsp>登录页面</a>");
            out.println("<br><a href =index.jsp>主页</a>");
            out.println("</body></html>");
        }
        catch(IOException exp){}
    }
}

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-05-18 22:24
    关注
    • Servlet 的测试依赖 web服务器,比如 tomcat等,不适合 使用 Junit单元测试
    • web服务器除了 tomcat,也可以使用 jetty ,通过代码的方式,把这个servlet的服务发布出去,比较适合本地开发自测使用;
    • 服务发好了,然后就可以用postman这些api测试工具,来访问这个servlet服务来测试
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月18日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题