1.学生界面前端代码
<body>
<form class="table_login" action="/web1/LoginServlet_student" method="post">//这里的action是当点击submit按钮是=时跳转到的servlet。
<div class="login_windows">学生登入页面</div>
<form>
<span style="padding-left: 10px"><input type="button" class="text_login" name="teacherlogin" value="教师登入" onclick="window.location.href='Teacher Login Windows .jsp'"></span>
<span style="padding-left: 50px"><input type="button" class="text_login" name="studentlogin" value="学生登入"></span><br><br>
<label for="username">用户名:</label>
<input type="text" class="td_text1" name="username" id="username" placeholder="请输入用户名"><br><br>
<label for="username">密码:</label>
<span>   </span><input type="password" class="td_text1" name="password" id="password" placeholder="请输入密码"><br><br>
<span style="padding-left: 30px;"><input type="submit" class="text_login" name="login" id="login" value="登入"></span>
<span style="padding-left: 50px"><input type="button" class="text_login" name="register" id="register" value="注册" onclick="window.location.href='register.jsp'"></span>
</form>
</form>
</body>
2.在连接数据库时,要到文件中修改url以及数据库的账号和密码
并且还需要添加文件的虚拟路径,在编写Java代码的路径时不加虚拟路径,因为会默认添加,但是在编写jsp代码时,需要加上前面的虚拟路径。
LoginServlet_student代码
@WebServlet( urlPatterns = "/LoginServlet_student")
public class LoginServlet_student extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.设置编码
//System.out.println("1111");
req.setCharacterEncoding("utf-8");
//2.获取所有请求参数
Map<String, String[]> map = req.getParameterMap();
//3.创建User对象
User loginUser = new User();
//3.2使用BeanUtils封装
try {
BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//4.调用UserDao的login方法
UserDao dao = new UserDao();
User user = dao.login_student(loginUser);
//5.判断user
if(user == null){
//登录失败
req.getRequestDispatcher("/failServlet").forward(req,resp);
}else{
//登录成功
//存储数据
req.setAttribute("user",user);
HttpSession session=req.getSession();
session.setAttribute("user",user);
//转发
req.getRequestDispatcher("/successServlet_student").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
在UserDao类中编写与数据库进行操作的代码
public class UserDao {
//声明JDBCTemplate对象公用
private JdbcTemplate template =new JdbcTemplate(JDBCUtil.getDataSource());
public User login(User loginUser) {
//编写sql
try {
String sql = "select * from user where username = ? and password = ?";
//调用query 方法
User user = template.queryForObject(sql,
new BeanPropertyRowMapper<User>(User.class),
loginUser.getUsername(), loginUser.getPassword());
return user;
} catch (DataAccessException e) {
e.printStackTrace();
return null;
}
}
}
eclipse连接数据库
1.刚开始一直连接不上,原因有可能是因为我的驱动包太久了。
2.重新下载一个新的驱动包:
连接步骤:
- 先build,mysql-connector-java驱动包
2.加载驱动
3.连接数据库
Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动
String jdbc = "jdbc:mysql://localhost:3306/person?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";;
Connection conn = DriverManager.getConnection(jdbc, "root", "root");// 链接到数据库
String sql = "select * from client where username=? and passwork=?";
PreparedStatement state = conn.prepareStatement(sql);
state.setString(1, usernameString);
state.setString(2, passworkString);
ResultSet resultSet = state.executeQuery();
if (resultSet.next()) {
System.out.println("登入成功" + resultSet.getString(1) + "欢迎你");
} else {
System.out.println("登入失败。账号或密码有误");
}
resultSet.close();
conn.close();