目录结构
只做了用户的登录与注册。
Servlet
Servlet是一个Java接口,接口的作用是规范。Servlet接口定义的是一套处理网络请求的规范。
所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:
- 你初始化时要做什么
- 你销毁时要做什么
- 你接受到请求时要做什么
Servlet是一个规范,但实现了Servlet的类不能处理请求。那请求怎么来到Servlet呢?答案是Servlet容器,比如最常用的Tomcat。Tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个Servlet去处理,然后调用那个Servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。
源码
User.java
public class User
{
private int id;
private String name;
private String password;
private int age;
public User()
{
}
public User(int id, String name, String password, int age)
{
this.id = id;
this.name = name;
this.password = password;
this.age = age;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
@Override
public String toString()
{
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age='" + age + '\'' +
'}';
}
}
UserDao.java
public class UserDao
{
public User selectByName(String name)
{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from user where name = ?";
User user = null;
try
{
conn = DBUtil.getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1, name);
rs = ps.executeQuery();
if (rs.next())
{
int id = rs.getInt(1);
String password = rs.getString(2);
int age = rs.getInt(3);
user = new User(id, name, password, age);
}
}
catch (SQLException | ClassNotFoundException e)
{
e.printStackTrace();
}
finally
{
try
{
DBUtil.close(rs, ps, conn);
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return user;
}
public int insertUser(User user)
{
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into user(name,password,age) value(?,?,?)";
try
{
conn = DBUtil.getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setString(2, user.getPassword());
ps.setInt(3, user.getAge());
return ps.executeUpdate();
}
catch (SQLException | ClassNotFoundException e)
{
e.printStackTrace();
}
finally
{
try
{
DBUtil.close(null, ps, conn);
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return -1;
}
}
UserService.java
public class UserService
{
private UserDao userDao = new UserDao();
public User selectByName(String name)
{
return userDao.selectByName(name);
}
public int insertUser(User user)
{
return userDao.insertUser(user);
}
}
LoginServlet
public class LoginServlet extends HttpServlet
{
UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println("输入:"+name + " " + password);
if (req.getParameter("login") != null && req.getParameter("login").equals("登录"))
{
User user = userService.selectByName(name);
if (user != null && user.getPassword().equals(password))
{
resp.getWriter().write(name + " " + password + "你登陆了");
System.out.println(user);
}
else
{
resp.getWriter().write(name + " " + "你账号或密码错了了");
System.out.println(user);
}
}
else if (req.getParameter("register") != null &&req.getParameter("register").equals("注册"))
{
if(!name.equals("") && !(password.equals("")))
{
User user = new User(0, name, password, (int)(Math.random() * 100));
System.out.println(userService.insertUser(user));
}
}
}
}
DBUtil.java
public class DBUtil
{
private static Connection conn;
public static Connection getConnection()
throws ClassNotFoundException, SQLException
{
// if (conn == null)
// {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///test?useSSL=false", "root", "root");
// }
return conn;
}
public static void close(ResultSet rs, Statement stat, Connection conn)
throws SQLException
{
if (rs != null)
rs.close();
if (stat != null)
stat.close();
if (conn != null)
conn.close();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.by.zrgj.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>