使用jsp实现用户注册及登录

1.思路:

首先建一个class,属性有用户名,密码,人数等,注意重写tostring,方便打印

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

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

    public int getId() {
        return id;
    }

    public void setId(int 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;
    }
}

2.再建一个类,这里面注意需要用到单例模式,因为只需要第一次初始化就可以了

public class NewsSystem {
    static {
        ns=new NewsSystem();
    }
    private static NewsSystem ns;
    private NewsSystem(){}
    public static NewsSystem getInstance(){
        return ns;
    }
//    单列模式,只初始化一次 getInstance
    public static int id_num;
    public List<User> users =new ArrayList<>(  );
    public void addUser(String username,String password,String cfmPwd){
        if(password.equals( cfmPwd )){
            User u=new User();
            u.setId( ++id_num );
            u.setUsername( username );
            u.setPassword( password );
            users.add( u );
        }else {
            System.out.println("密码确认不一致");
        }
        System.out.println("当前共有"+users.size()+"个用户");

    }
}

3.在web里面创建一个html,创建一个登录表单

body>
<form action="index.jsp">
    <p> 用户名:<input type="text" name="name"></p>
    <p>密码:<input type="password" name="pwd"></p>
    <p>确认密码:<input type="password" name="confirmPwd"></p>
    <p><input type="submit"  value="提交注册"></p>
</form>
</body>

4.打开web下面的index.jsp,把表单的信息输入进去

 <body>
<%
    request.setCharacterEncoding( "utf-8" );
    response.setCharacterEncoding( "utf-8" );
    String username = request.getParameter( "name" );
    String password = request.getParameter( "pwd" );
    String cfmPwd = request.getParameter( "confirmPwd" );
    NewsSystem ns=NewsSystem.getInstance();
    ns.addUser( username,password,cfmPwd );
    out.print( ns.users );

//    request.getRequestDispatcher( "hello.jsp").
//            forward( request,response ); //请求转发

        session.setAttribute( "user",username );
    response.sendRedirect( "hello.jsp" ); //重定向
%>
 <p> <%=ns.users%></p>

  </body>

5.用户登录页面操作以及结束了,如果需要记录登录用户的姓名,可以在创建一个jsp

<body>
<%--<% String username=request.getParameter("name");%>--%>
<%--<h1>恭喜用户<%=username%>登录成功</h1>--%>

<% Object user = session.getAttribute( "user" );%>
<h2>恭喜用户<%=user%>登录成功</h2>

<h1>恭喜用户${user}登录</h1>   <!--EL表达式-->
</body>

我用了三种方法,结合5和我一一对应。

这里面需要注意的是,需要先添加tomcat

 6.每次运行都会先报错,在把.html输入到url才行比较麻烦,所以在web下面有个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">
    <welcome-file-list>
        <welcome-file>/regex.html</welcome-file>
    </welcome-file-list>
</web-app>

7.下面就是运行结果

 

总结:我遇到的一些问题。

1.首先如果tomcat没有装好,在操作对象request.方法出不来,就算强行打上去,也会爆红的;

2.也可以先装tomcat,点击绿色三角形运行,如果跳出一个页面,就是安装成功;

3.使用对象点方法request.getParameter里面的参数要和你在表单设置的name名字要相同,否则会数据是空的

4.使用单例模式getInstance,因为没有数据库存数据,如果不用单例模式,每次都会创建一个新的对象,不会计算总数

5.不要用中文,容易报错,也不要直接在src下建类,都是出错的

6.不要用页面上了的浏览器打开,要用run运行

7.如果提示导入不正确,可以把out先删除,再create一个就可以了

  • 7
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个简单的基于JSP实现用户登录、注册、注销和退出的示例代码: 登录页面 login.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h1>Login</h1> <form method="post" action="login.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Login"> </form> <a href="register.jsp">Register</a> </body> </html> ``` 注册页面 register.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> </head> <body> <h1>Register</h1> <form method="post" action="register.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Register"> </form> <a href="login.jsp">Login</a> </body> </html> ``` 登录、注册、注销和退出的Java代码 LoginServlet.java: ```java import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/login.do") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Map<String, String> userDatabase = new HashMap<>(); static { userDatabase.put("user1", "password1"); userDatabase.put("user2", "password2"); userDatabase.put("user3", "password3"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (userDatabase.containsKey(username) && userDatabase.get(username).equals(password)) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("home.jsp"); } else { response.sendRedirect("login.jsp"); } } } @WebServlet("/register.do") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (!username.isEmpty() && !password.isEmpty()) { LoginServlet.userDatabase.put(username, password); response.sendRedirect("login.jsp"); } else { response.sendRedirect("register.jsp"); } } } @WebServlet("/logout.do") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("login.jsp"); } } @WebServlet("/home.jsp") public class HomeServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null && session.getAttribute("username") != null) { request.getRequestDispatcher("home.jsp").forward(request, response); } else { response.sendRedirect("login.jsp"); } } } ``` 其中,LoginServlet实现了用户登录功能,RegisterServlet实现用户注册功能,LogoutServlet实现了用户注销功能,HomeServlet实现了用户登录后的主页。登录成功后,会将用户名保存到HttpSession中,注销时将HttpSession失效。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy64ll826

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值