Javaweb实现登录

1. 需求

用户访问登录页面,输入用户名和密码完成登录。如果正确则在页面中显示登录成功,如果失败则在页面中显示登录失败!

2. 技术要求

使用纯Servlet完成,包括页面的创建以及功能的实现。

3. 数据库设计

创建t_user用户表

表名:T_USER
字段名类型约束
idint主键
usernamevarchar(100)
passwordvarchar(20)

4. 项目开发环境搭建

1.创建Java Enterprise项目

2.在web目录下的WEB-INF目录中创建lib文件夹,导入数据库驱动包,并选中add as library

3.创建包结构

 5. 登录页面的创建

1. 在controller包中创建LoginPageServlet,继承HttpServlet

2. 重写service方法,在service方法中通过response对象的writer方法完成页面的输出

3. 在web.xml中配置该Servlet(使用注解配置更简洁)

public class LoginPageServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();

        writer.write("<html>");
        writer.write("<head>");
        writer.write("<meta charset='utf-8'>");
        writer.write("<title>登录页面</title>");
        writer.write("</head>");
        writer.write("<body>");
        writer.write("<form action='' method='post'>");
        writer.write("账号:<input type='text' name='username'><br>");
        writer.write("密码:<input type='password' name='password'><br>");
        writer.write("<input type='submit' value='登录'><br>");
        writer.write("</form>");
        writer.write("</body>");
        writer.write("</html>");
    }
}
<?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>LoginPageServlet</servlet-name>
        <servlet-class>com.bjsxt.controller.LoginPageServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>LoginPageServlet</servlet-name>
        <url-pattern>/LoginPageServlet</url-pattern>
    </servlet-mapping>
</web-app>

6. 编写实体类

public class User {
    private Integer id;
    private String username;
    private String password;

    public User() {
    }

    public User(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

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

7. 编写dao接口及实现类

public interface UserDao {
    User getUserByUsernameAndPassword(String username, String password);
}
public class UserDaoImpl implements UserDao {
    @Override
    public User getUserByUsernameAndPassword(String username, String password) {
        User user = null;
        Connection connection = null;
        PreparedStatement ps = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/bjsxt01?serverTimezone=Asia/Shanghai";
            connection = DriverManager.getConnection(url, "root", "root3306");
            String sql = "select * from t_user where username=? and password=?";
            ps = connection.prepareStatement(sql);
            ps.setString(1, username);
            ps.setString(2, password);
            ResultSet resultSet = ps.executeQuery();
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String username1 = resultSet.getString("username");
                String password1 = resultSet.getString("password");
                user = new User(id, username1, password1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return user;
    }
}

8. 编写service层接口及实现类

public interface UserService {
    User login(String username, String password);
}
public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl();

    @Override
    public User login(String username, String password) {
        return userDao.getUserByUsernameAndPassword(username, password);
    }
}

9. 编写处理登录的Servlet

public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码方式
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //接收参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //调用业务层处理请求
        UserService userService = new UserServiceImpl();
        User u = userService.login(username, password);
        if(u == null){
            resp.getWriter().write("登录失败!");
        }else{
            resp.getWriter().write("登录成功!");
        }
    }
}

10. 配置Servlet

<?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>LoginPageServlet</servlet-name>
        <servlet-class>com.bjsxt.controller.LoginPageServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>LoginPageServlet</servlet-name>
        <url-pattern>/LoginPageServlet</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.bjsxt.controller.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>

11. 修改登录页面的表单地址信息

 

12. 启动服务器测试

 

13.注意事项

1.用熟了配置以后就用注解配置

2.可以封装一个德鲁伊连接池的工具类

3.创建lib是在WEB-INF包里面,不然根本访问不了数据库和连接池(出现巨多问题)

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaWeb可以使用Servlet和JSP技术实现登录功能。以下是一个简单的登录示例: 1. 创建一个登录页面(login.jsp),在该页面中包含用户名和密码的输入框以及登录按钮。 ``` <form action="loginServlet" method="post"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <button type="submit">登录</button> </form> ``` 2. 创建一个Servlet(loginServlet),在该Servlet中处理登录请求,验证用户名和密码是否正确。 ``` @WebServlet("/loginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if ("admin".equals(username) && "123456".equals(password)) { // 登录成功 request.getSession().setAttribute("username", username); response.sendRedirect("index.jsp"); } else { // 登录失败 request.setAttribute("msg", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } ``` 3. 创建一个首页(index.jsp),在该页面中显示登录用户的信息。 ``` <% String username = (String) request.getSession().getAttribute("username"); %> <% if (username != null) { %> <h2>欢迎您,<%= username %></h2> <a href="logoutServlet">退出登录</a> <% } else { %> <p>您还未登录,请<a href="login.jsp">登录</a></p> <% } %> ``` 4. 创建一个退出登录Servlet(logoutServlet),在该Servlet中处理退出登录请求。 ``` @WebServlet("/logoutServlet") public class LogoutServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("index.jsp"); } } ``` 以上就是JavaWeb实现登录功能的简单示例。当用户访问登录页面时,输入用户名和密码并点击登录按钮,将会跳转到loginServlet进行验证。如果验证通过,则将用户名保存到Session中,并跳转到首页显示登录用户的信息;如果验证失败,则返回登录页面并显示错误信息。当用户点击退出登录链接时,将会调用logoutServlet退出登录并跳转到首页。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值