Servlet原理与构建Web项目

目录结构

只做了用户的登录与注册。
在这里插入图片描述

Servlet

Servlet是一个Java接口,接口的作用是规范。Servlet接口定义的是一套处理网络请求的规范。

所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:

  1. 你初始化时要做什么
  2. 你销毁时要做什么
  3. 你接受到请求时要做什么

Servlet是一个规范,但实现了Servlet的类不能处理请求。那请求怎么来到Servlet呢?答案是Servlet容器,比如最常用的Tomcat。Tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个Servlet去处理,然后调用那个Servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。

源码

User.java

public class User
{
    private int id;

    private String name;

    private String password;

    private int age;

    public User()
    {
    }

    public User(int id, String name, String password, int age)
    {
        this.id = id;
        this.name = name;
        this.password = password;
        this.age = age;
    }

    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    @Override
    public String toString()
    {
        return "User{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", password='" + password + '\'' +
               ", age='" + age + '\'' +
               '}';
    }
}

UserDao.java

public class UserDao
{
    public User selectByName(String name)
    {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select * from user where name = ?";
        User user = null;
        try
        {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);
            ps.setString(1, name);
            rs = ps.executeQuery();
            if (rs.next())
            {
                int id = rs.getInt(1);
                String password = rs.getString(2);
                int age = rs.getInt(3);
                user = new User(id, name, password, age);
            }
        }
        catch (SQLException | ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                DBUtil.close(rs, ps, conn);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
        return user;
    }

    public int insertUser(User user)
    {
        Connection conn = null;
        PreparedStatement ps = null;
        String sql = "insert into user(name,password,age) value(?,?,?)";
        try
        {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);
            ps.setString(1, user.getName());
            ps.setString(2, user.getPassword());
            ps.setInt(3, user.getAge());
            return ps.executeUpdate();
        }
        catch (SQLException | ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                DBUtil.close(null, ps, conn);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
        return -1;
    }
}

UserService.java

public class UserService
{
    private UserDao userDao = new UserDao();

    public User selectByName(String name)
    {
        return userDao.selectByName(name);
    }

    public int insertUser(User user)
    {
        return userDao.insertUser(user);
    }
}

LoginServlet

public class LoginServlet extends HttpServlet
{
    UserService userService = new UserService();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");
        String name = req.getParameter("name");
        String password = req.getParameter("password");
        System.out.println("输入:"+name + " " + password);
        if (req.getParameter("login") != null && req.getParameter("login").equals("登录"))
        {
            User user = userService.selectByName(name);
            if (user != null && user.getPassword().equals(password))
            {
                resp.getWriter().write(name + " " + password + "你登陆了");
                System.out.println(user);
            }
            else
            {
                resp.getWriter().write(name + " " + "你账号或密码错了了");
                System.out.println(user);
            }
        }
        else if (req.getParameter("register") != null &&req.getParameter("register").equals("注册"))
        {
            if(!name.equals("") && !(password.equals("")))
            {
                User user = new User(0, name, password, (int)(Math.random() * 100));
                System.out.println(userService.insertUser(user));

            }
        }
    }
}

DBUtil.java

public class DBUtil
{
    private static Connection conn;

    public static Connection getConnection()
        throws ClassNotFoundException, SQLException
    {
//        if (conn == null)
//        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql:///test?useSSL=false", "root", "root");
//        }
        return conn;

    }

    public static void close(ResultSet rs, Statement stat, Connection conn)
        throws SQLException
    {
        if (rs != null)
            rs.close();
        if (stat != null)
            stat.close();
        if (conn != null)
            conn.close();
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.by.zrgj.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值