在网页中单击登陆后,跳转到Login界面,LoginServlet的作用是获取用户输入的账号和密码,并与数据库中的数据进行对比,存在此用户即可通过登录
1.form表单中的action表示对submit提交表单的反应,action到LoginServlet中去,其中method方法有get和post方法,get方法会将用户输入的数据直接在地址栏中显示,post方法则不显示
2.LoginServlet中存在doPost和doGet方法
一般我们通过在doPost方法中调用doGet方法
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);//调用doGet方法
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name"); //定义一个变量获取用户输入的name
String password = request.getParameter("password");
System.out.println(name);
System.out.println(password);
}
}
3.创建Dao类
DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,并允许开发者通过ODBC像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。
在Dao中新建一个接口,UserDao接口中有返回用户相关信息的方法(无需实现)
实现UserDao接口中的方法,选中类名,alt+enter,如下图
自动生成UserDaoImp类实现UserDao中的方法
public class UserDaoImpl implements UserDao {
Connection conn = DButil.getConnection();
@Override
public User login(String name, String password) {
String sql = "select * from t_user where name=? and password=?";
User user=null;
PreparedStatement ps = null;//预备语句
try {
ps = conn.prepareStatement(sql);
ps.setString(1,name);//将name值赋值给ps的第一个位置
ps.setString(1,password);
ResultSet rs = ps.executeQuery();//将executeQuery结果放在结果集ResultSet中
//bean 导入,查询数据集有没有结果,有结果放到bean中
if(rs.next()){
//使用user中的方法来给user赋值,如果t_user查询结果存在
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
}
DButil.release(rs,null,ps,conn);//关闭连接,释放资源
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public boolean register(String name, String password) {
return false;
}
@Override
public List<User> getUsers() {
return null;
}
}
4.对LoginServlet类进行完善,得到用户输入的用户名和密码后,去数据库中查询是否存在此用户.
5.Servlet Session的学习
HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。
当我们打开多个网页时,想要保存之前网页的输入记录和其他信息时,可以使用Session对象来解决
Servlet 提供了 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。
Servlet 容器使用这个接口来创建一个 HTTP 客户端和 HTTP 服务器之间的 session 会话。会话持续一个指定的时间段(默认为30分钟),跨多个连接或页面请求。
可以通过调用 HttpServletRequest 的公共方法 getSession() 来获取 HttpSession 对象,如下所示:
HttpSession session = request.getSession();
通过一个具体的例子来学习session的功能
request.getSession().setAttribute("user",user);
request.getSession()获取一个Session对象,再通过setAttribute()方法来绑定一个对象(user)到session对话中