知识点:1:@webServlet 此标签作用,可以不需要我们在web.xml中配置servlet
2:通过转发,使页面跳转到WEB-INF中的jsp(简单展示了转发与重定向的区别)
3:获取配置在项目中的config.properties配置文件
此Demo使用的是表单提交method=”post” action=”/login”
@WebServlet(urlPatterns="/login")//这是请求路径
public class loginServlet extends HttpServlet{
public void checkLogin(HttpServletReqest req,HttpServletResponse resp) throws ServletException,IoException{
String userName=req.getParameter("userName");
String password=req.getParameter("password");
//若表单没有设置验证用户账号密码为空则这里需要使用验证
if(StringUtils.isNotBlank(userName)&&StringUtils.isNotBlank(password)){
//state表示验证成功了
Boolean state=DbUtils.check(userName,password);
if(state){
//此处使用转发 因为redirect相当于重新发送请求,而不是内部跳转
//页面不会跳转到WEB-INF下的页面
req.getRequestDispatcher("/WEB-INF/view/commons/success.jsp").forward(req, resp);
return;
}
req.getRequestDispatcher("/WEB-INF/view/commons/nameOrPwdMismatch.jsp").forward(req, resp);
return;
}
resp.sendRedirect("nameOrPwdIsBlank.jsp");
}
}
DbUtils中
private Boolean state = null;
public Boolean check(String name, String pwd) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName("此处在配置文件中");
// 创建连接 //一般我们都是将db信息放到配置文件中,此处说明怎么加载我们在resources中的config.properties
Properties p=new Properties();
InputStream IS=LoginController.class.getClassLoader().getResourceAsStream("config.properties");
p.load(IS);
conn = DriverManager.getConnection(p.getProperty("jdbc.url"),p.getProperty("jdbc.userName"),p.getProperty("jdbc.password"));
conn.prepareStatement("select name,password from T_USER where name=? and password=?");
ps.setString(1, name);
ps.setString(2, pwd);
rs = ps.executeQuery();
while (rs.next()) {
if (rs.getString("name").equals(name)
&& rs.getString("password").equals(pwd)) {
state = true;
} else
state = false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return state;
}