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一个就可以了