测试开发系列之——tomcat&servlet

学习目标

  • WEB服务器tomcat
  • servlet

WEB服务器

  • Web服务器是指能够为发出请求的浏览器提供文档的程序。服务器是一种被动程序,只有浏览器发出请求的时候才会响应。应用层使用的是HTTP协议。
  • 常用web服务器
    1. apache
    2. nginx
    3. iis
    4. tomcat

广义的servlet

  • Servlet(Servlet Applet)是Java Servlet的简称,用Java编写的服务器端程序。用来接收和响应web客户端的请求,主要用于动态生成web页面内容。
  • Servlet没有main方法,不能独立运行,因此必须把它部署到Servlet容器中,由容器来实例化并调用Servlet。

tomcat简介

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,使用java语言编写的,完全运行在jvm上,实现了Servlet规范和jsp规范。2.5/2.1-6.X

Tomcat的核心分为3个部分:
(1)Web容器—处理静态页面;
(2)catalina—一个servlet容器-----处理servlet
(3)还有就是JSP容器,它就是把jsp页面翻译成一般的servlet。

apache-tomcat目录结构

  • bin:存放二进制文件,启动脚本等
  • work:工作区。文件编译存放区
  • lib:web应用所依赖的库
  • logs:记录程序启动及运行时的日志
  • temp:存放临时文件
  • webapps:web应用默认存放的目录
  • conf:配置文件目录

练习:servlet完成查询所有用户并显示

运行结果截图

运行结果截图

工程截图

工程截图

User.java代码

package com.one.pojo;

import lombok.Data;

@Data
public class User {
  private int userId;
  private String userName;
  private String userPwd;
  public User(int userId, String userName, String userPwd){
    super();
    this.userId = userId;
    this.userName = userName;
    this.userPwd = userPwd;
  }
}

UserServlet.java代码

package com.one.servlet;

import com.one.pojo.User;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class UserServlet
 */
@WebServlet("/userServlet")
public class UserServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserServlet() {
        super();
    }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    if("login".equals(action)){
      login(request, response);
    }else if("findAll".equals(action)){
      findAll(request, response);
    }
  }

  private void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    List<User> list = new ArrayList<>();
    list.add(new User(1,"zs","666"));
    list.add(new User(2,"lisi","888"));
    //将list放入request值域中
    request.setAttribute("list", list);
    request.getRequestDispatcher("index.jsp").forward(request, response);
  }
  
  private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 接受请求并响应
    // 1.获取请求参数并封装为对象
    String username = request.getParameter("username");
    String userpwd = request.getParameter("userpwd");
    // 2.数据验证 非空 正则表达式
    // 3.登录业务处理,得到登陆业务结果
    boolean b = false;
    if("zs".equals(username)&&"666".equals(userpwd)){
      b = true;
    }
    // 4.根据结果进行跳转
    if(b){
      //服务器内部转发,同一请求,地址栏不会变化
      request.getRequestDispatcher("index.jsp").forward(request, response);
    }else{
      response.sendRedirect("login.jsp?msg=error");
    }
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }
}

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>
</head>
<body>
  <!-- 欢迎你,<%=request.getParameter("username") %> -->
  欢迎你,${param.username}
  循环${requestScope.list}集合,取出每一个user
</body>
</html>

login.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>
</head>
<body>
  ${param.msg}
  <form action="userServlet" method="post">
    <input name="username" /><br/>
    <input name="action" value="findAll" type="hidden"/><br/>
    <input name="userpwd" type="password"/><br/>
    <input type="submit" value="登陆"/>&nbsp; <input type="reset"  value="重置" /></td>
  </form>
</body>
</html>
发布了14 篇原创文章 · 获赞 1 · 访问量 855

猜你喜欢

转载自blog.csdn.net/anniewhite/article/details/104078022