题目:功能1:登录
说明:
系统中只有一个用户(用户名: admin,密码: 123456)
相关资源:
login.html : 登录表单页面
LoginServlet: 处理登录请求的Servlet
login_success.html : 登录成功页面(提示: 登录成功)
login_error.html : 登录失败页面(提示: 用户名或密码不正确)
功能2:注册
说明:
系统中只有一个用户(用户名: admin,密码: 123456)
相关资源:
register.html : 注册表单页面
RegistServlet: 处理注册请求的Servlet
regist_success.html :注册成功页面(提示:注册成功)
regist_error.html :注册失败页面(提示: 用户名已存在)
解题:
1. 作业 1.1 不带数据库的登录和注册 ① 登录 创建登录页面
<form action="" method="post">
username:<input type="text" name="username"/><br/>
password:<input type="password" name="password"/><br/>
<input type="submit" value="登录">
</form>
web.xml
创建LoginServlet
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获得请求参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//2. 处理业务 3. 给出响应(页面跳转)
if("admin".equals(username)&&"123456".equals(password)){
//跳转至登录成功页面
request.getRequestDispatcher("login_success.html").forward(request,response);
}else{
//跳转至登录失败页面
request.getRequestDispatcher("login_error.html").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
创建登录成功和失败页面
流程:
测试
或
② 注册 创建注册的页面
<form action="" method="post">
username:<input type="text" name="username"/><br/>
password:<input type="password" name="password"/><br/>
confirm password:<input type="password" name="password"/><br/>
email:<input type="text" name="email"/><br/>
<input type="submit" value="注册">
</form>
创建RegistServlet
public class RegistServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获得请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
//2. 处理注册的业务 3. 给响应
if("admin".equals(username)){
//注册失败
request.getRequestDispatcher("regist_error.html").forward(request,response);
}else{
//注册成功
request.getRequestDispatcher("regist_success.html").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
web.xml
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.atguigu.servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RegistServlet</servlet-name>
<servlet-class>com.atguigu.servlet.RegistServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RegistServlet</servlet-name>
<url-pattern>/regist</url-pattern>
</servlet-mapping>
注册成功和失败页面
流程
测试
1.2 连接数据库的登录注册功能 ① 搭建环境 a. 导入jar包(数据库驱动包、数据库连接池、DBUtils) b. 创建JDBCTools和BaseDao c. 数据库连接池的配置文件 d. 创建users表格 e. 创建实体类(User) ② 注册功能 a. 创建注册页面 b. 创建RegistServlet
public class RegistServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获得请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
User user=new User(0,username,password,email);
//2. 处理注册的业务 3. 给响应
UserDao userDao=new UserDaoImpl();
User userByUsername = userDao.findUserByUsername(username);
if(userByUsername==null){
//可以注册
userDao.addUser(user);
request.getRequestDispatcher("regist_success.html").forward(request,response);
}else{
request.getRequestDispatcher("regist_error.html").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
c. 创建UserDaoImpl
public class UserDaoImpl extends BaseDaoImpl implements UserDao {
@Override
public User findUserByUsername(String username) {
String sql="select * from users where username=?";
return this.getBean(User.class,sql,username);
}
@Override
public boolean addUser(User user) {
String sql="insert into users values(null,?,?,?)";
int update = this.update(sql, user.getUsername(), user.getPassword(), user.getEmail());
if(update>0)
return true;
return false;
}
}
③ 登录功能 a. 创建login.html b. 创建LoginServlet
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获得请求参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//2. 处理业务 3. 给出响应(页面跳转)
UserDao userDao=new UserDaoImpl();
User userByUsername = userDao.findUserByUsername(username);
if(userByUsername!=null){
//说明用户名是对的,接下来验证密码
if(userByUsername.getPassword().equals(password)){
request.getRequestDispatcher("login_success.html").forward(request,response);
}else{
//说明密码不对
request.getRequestDispatcher("login_error.html").forward(request,response);
}
}else{
//说明用户名不对
request.getRequestDispatcher("login_error.html").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
c. 创建UserDao
public class UserDaoImpl extends BaseDaoImpl implements UserDao {
@Override
public User findUserByUsername(String username) {
String sql="select * from users where username=?";
return this.getBean(User.class,sql,username);
}
@Override
public boolean addUser(User user) {
String sql="insert into users values(null,?,?,?)";
int update = this.update(sql, user.getUsername(), user.getPassword(), user.getEmail());
if(update>0)
return true;
return false;
}
}