简单理解:servlet相当于前端页面(可以接受来自前端发出的请求),在sevlet类中声明service对象,进而实现对service层的调用(调用其方法),在service实现类中声明Dao对象,实现对Dao层的调用(调用其方法)。这就是所谓的三层架构。
register.jsp
//register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<h1>欢迎大家来访问本系统</h1>
<form action=" /ServletDemo/register" method="post">
用户名:<input type="text" name="username"/><br/>
密码: <input type="password" name="pwd"/><br/>
邮箱:<input type="text" name="email"/><br/>
<input type="submit" value="注册"/><input type="reset"/>
</form>
</body>
</html>
web.xml
<!--web.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ServletDemo</display-name>
<!-- 配置注册请求的Servlet -->
<servlet>
<servlet-name>registerServlet</servlet-name>
<servlet-class>com.icss.web.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>registerServlet</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
</web-app>
RegisterServlet.java
package com.icss.web;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.icss.pojo.RegUser;
import com.icss.service.UserService;
import com.icss.service.impl.UserServiceImpl;
public class RegisterServlet extends HttpServlet {
//alt+/会有代码提示
//定义Service层
private UserService userService=new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
RegUser user=new RegUser();
System.out.println("注册请求到达了我的Servlet");
String uname = request.getParameter("username");
String pwd = request.getParameter("pwd");
String email = request.getParameter("email");
user.setUsername(uname);
user.setPassword(pwd);
user.setEmail(email);
user.setRegTime(new Date());
//调用service层,注册用户
userService.registerUser(user);
}
}
UserService.java
package com.icss.service;
import com.icss.pojo.RegUser;
public interface UserService {
public void registerUser(RegUser user);
}
UserServiceImpl
package com.icss.service.impl;
import com.icss.dao.UserDao;
import com.icss.dao.impl.UserDaoImpl;
import com.icss.pojo.RegUser;
import com.icss.service.UserService;
public class UserServiceImpl implements UserService {
//定义一个Dao层对象
private UserDao userDao=new UserDaoImpl();
@Override
public void registerUser(RegUser user) {
// TODO 自动生成的方法存根
userDao.registerUser(user);
}
}
RegUser.java
package com.icss.pojo;
import java.util.Date;
public class RegUser {
private String username;
private String password;
private String email;
private Date regTime;
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getRegTime() {
return regTime;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
}
@Override
public String toString() {
return "RegUser [username=" + username + ", password=" + password + ", email=" + email + ", regTime=" + regTime
+ "]";
}
}
UserDao.java
package com.icss.dao;
import com.icss.pojo.RegUser;
public interface UserDao {
public void registerUser(RegUser user);
// TODO 自动生成的方法存根
}
UserDaoImpl.java
package com.icss.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.text.SimpleDateFormat;
import com.icss.dao.UserDao;
import com.icss.pojo.RegUser;
import com.mysql.jdbc.PreparedStatement;
public class UserDaoImpl implements UserDao {
@Override
public void registerUser(RegUser user) {
// TODO 自动生成的方法存根
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
//3.定义sql语句
String sql="INSERT INTO USER VALUES(NULL,?,?,?,?)";
PreparedStatement statement=(PreparedStatement) connection.prepareStatement(sql);
//4.执行sql语句
statement.setString(1, user.getUsername());
statement.setString(2, user.getPassword());
statement.setString(3, user.getEmail());
//把Datar日期转为字符串传递到数据
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
statement.setString(4, simpleDateFormat.format(user.getRegTime()));
//5.执行sql语句
statement.executeUpdate();
//6.关闭连接
statement.close();
connection.close();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
下面是创建的数据表(我用的是SQLyog管理数据库)。
因篇幅问题不能全部显示,请点此查看更多更全内容