我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
用户登录案例要求:
1.编写login.html页面有username和password两个输入框
2.使用Druid数据库连接池技术操作mysql数据库中的user表
3.使用JDBCTemplate技术封装JDBC
4.登陆成功有成功提示,登录失败有失败提示.
开发步骤:
1.创建项目导入html文件配置文件,jar包
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post"> 用户名:<input type="text" name="username"> <br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html>
2.创建数据库表
CREATE DATABASE day01; USE day01; CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT NOT NULL, username VARCHAR(32) UNIQUE NOT NULL, PASSWORD VARCHAR(32) NOT NULL );
3.创建用户类User
package cn.zxp.domain; public class User { private int id; private String username; private String 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; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
4.创建包编写工具类JDBCUtils
package cn.zxp.util; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class JDBCUtils { private static DataSource ds; static { try { Properties pro = new Properties(); InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
public static DataSource getDataSorce(){
return ds;
}
}
5.创建UserDao提供Login方法
package cn.zxp.dao; import cn.zxp.domain.User; import cn.zxp.util.JDBCUtils; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; public class UserDao { public User login(User loginUser) { try { String sql = "select * from user where username = '?' and password = '?'"; User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), loginUser.getUsername(), loginUser.getPassword()); return user; } catch (DataAccessException e) { e.printStackTrace(); return null; } } private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSorce()); }
6.编写LoginServlet类
package cn.zxp.web; import cn.zxp.dao.UserDao; import cn.zxp.domain.User; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class loginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String username = req.getParameter("username"); String password = req.getParameter("password"); User loginUser = new User(); loginUser.setUsername(username); loginUser.setPassword(password); UserDao dao = new UserDao(); User user = dao.login(loginUser); if (username == null) { req.getRequestDispatcher("failServlet").forward(req, resp); } else { req.setAttribute("user", user); req.getRequestDispatcher("successServlet").forward(req, resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
7.编写failServlet和successServlet
package cn.zxp.web; 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 java.io.IOException; @WebServlet("/failServlet" ) public class failServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); resp.getWriter().write("登陆错误,用户名或密码错误"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
package cn.zxp.web; import cn.zxp.domain.User; 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 java.io.IOException; @WebServlet("/successServlet" ) public class successServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { User user = (User) req.getAttribute("user"); if (user != null) { resp.setContentType("text/html;charset=utf-8"); resp.setContentType("登陆成功"+user+"欢迎您"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
8.login.html中form表单的action路径写法
虚拟目录+Servlet的资源路径
9.BeanUtils工具类,简化数据封装
用来封装JavaBean的标准Javalei