1、先创建好目录:
/**一定要注意:当我们使用tomcat时lib包是需要放在web-INF中。
*其实想明白很简单,如果我们不启动Tomcat,那么只需要把包添加到java环境的路径下即可
* (就是我们常用的add path),这样,java程序就可以使用这个包中的类,但是,javaweb
* 是运行在Tomcat下的,我们导的包,必须让Tomcat找到,而tomcat应用服务器,它有其自
* 己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的路径去找相应的lib
* 下的jar文件。也就是说Tomcat默认的路径就是WEB_INF这个目录下的lib,如果我们不
* 放在这里,就会找不到依赖,也就是常有情况使用c:表达式报错。
*
*/
2、创建登录页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/Web11/login" method="post">
<input name="username"><br>
<input name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
3、 创建一个JavaBean对象:
package com.sise.JavaBean;
public class User {
private int id;
private String username;
private String password;
private String address;
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;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", address='" + address + '\'' +
'}';
}
}
4、运用数据库连接池,编写工具类,导入jar包,导入mysql包,导入Spring包(因为需要用到Template),写配置文件
package com.sise.Jdbc;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCUtils {
private static DataSource ds;
static {
try {
InputStream ras = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
Properties properties = new Properties();
properties.load(ras);
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {return ds.getConnection();}
public static DataSource getDataSource(){
return ds;
}
}
# druid.properties文件的配置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/webtest
username=root
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大超时时间
maxWait=3000
5、编写登录代码,也就是template的运用:
package com.sise.Dao;
import com.sise.JavaBean.User;
import com.sise.Jdbc.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
import java.util.Map;
public class LoginDao {
DataSource ds=JDBCUtils.getDataSource();
private JdbcTemplate jdbct=new JdbcTemplate(ds);
public User select(User user){//快捷键ctrl+alt+t
try {
String sql="select * from t_user where username=? and password=?";
User query = jdbct.queryForObject(sql
, new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getPassword());
return query;
} catch (DataAccessException e) {
e.printStackTrace();//记录异常
return null;//如果查询不到user,则返回null
}
}
/**一定要注意:当我们使用tomcat时lib包是需要放在web-INF中。
*其实想明白很简单,如果我们不启动Tomcat,那么只需要把包添加到java环境的路径下即可
* (就是我们常用的add path),这样,java程序就可以使用这个包中的类,但是,javaweb
* 是运行在Tomcat下的,我们导的包,必须让Tomcat找到,而tomcat应用服务器,它有其自
* 己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的路径去找相应的lib
* 下的jar文件。也就是说Tomcat默认的路径就是WEB_INF这个目录下的lib,如果我们不
* 放在这里,就会找不到依赖,也就是常有情况使用c:表达式报错。
*
*/
}
6、编写Servlet继承HttpServlet:
package com.sise.Servlet;
import com.sise.Dao.LoginDao;
import com.sise.JavaBean.User;
import javax.servlet.RequestDispatcher;
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("/login")
public class ServletImpl extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
User user=new User();
user.setUsername(username);
user.setPassword(password);
LoginDao ld=new LoginDao();
User user1 = ld.select(user);
if (user1!=null){
System.out.println("登录成功,欢迎您");
req.setAttribute("user",user1);
req.getRequestDispatcher("/success").forward(req,resp);
}else {
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/false");
requestDispatcher.forward(req,resp);
}
}
}
7、资源内部跳转的其他资源代码:
package com.sise.Servlet;
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("/false")
public class ServletImpl2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("登录失败");
}
}
package com.sise.Servlet;
import com.sise.JavaBean.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("/success")
public class ServletImpl3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = (User) req.getAttribute("user");//强制类型转换
if (user!=null) {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write(user.getUsername()+"登录成功");
}
}
}
8、设置好数据库:
9、运行: