File->New->Project新建一个名为javaweb01的工程
1
2
javaweb01->New->Module新建一个名为MyManage的模块
1
2
将MyManage模块设置为支持web项目
1
2
将web项目重命名并移动到main路径下
配置pom文件(文件依赖,打包方式,以及支持加载的文件)
4.0.0
com.by
javaweb
1.0-SNAPSHOT
MyManage
war
8
8
UTF-8
javax.servlet
servlet-api
2.5
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.47
log4j
log4j
1.2.17
javax.servlet.jsp
jsp-api
2.0
jstl
jstl
1.2
src/main/java
**/*.xml
src/main/resources
创建三层架构的包(表现层)servlet,(业务逻辑层)service serviceimpl,(数据访问层)mapper
加载配置文件(数据库配置文件,日志文件,MyBatis配置文件)
数据库配置文件db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3305/servlet?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
日志文件log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
MyBatis配置文件mybatis-config.xml
项目结构
Tomcat服务器
1
2
3
4
5
6
7
8
9
SqlSession回话实例从始至终都使用,所以在将SqlSession装在ServletContext里边
新建com->by->listener->MyServletContxtListenerlei
public class MyServletContxtListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
try {
//加载配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//使用数据的会话实例
SqlSession sqlSession = sessionFactory.openSession();
//把sqlSession对象撞到servletContext中
ServletContext servletContext = servletContextEvent.getServletContext();
servletContext.setAttribute("sqlSession", sqlSession);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
web.xml
com.by.listener.MyServletContxtListener
因为文件请求和响应需要防止字符编码格式不一样而导致乱码,所以我们采用过滤器技术过滤每一个servlet文件
新建com->by->filter->CharacterEncodingFilter
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//请求中文乱码
servletRequest.setCharacterEncoding("utf-8");
//响应中文乱码
servletResponse.setContentType("text/html;charset=utf-8");
//放行filter
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
pojo包下新建User类
package com.by.pojo;
public class User {
private Integer id;
private String username;
private String password;
private String sex;
private String address;
private Integer age;
public User(Integer id, String username, String password, String sex, Integer age, String address) {
this.id = id;
this.username = username;
this.password = password;
this.sex = sex;
this.address = address;
this.age = age;
}
public User(String username, String password, String sex, Integer age, String address) {
this.username = username;
this.password = password;
this.sex = sex;
this.address = address;
this.age = age;
}
public User() {
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer 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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
web.xml
characterEncodingFilter
com.by.filter.CharacterEncodingFilter
characterEncodingFilter
/*
login.jsp
<%--
Created by IntelliJ IDEA.
User: 21309
Date: 2023-12-27
Time: 16:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
$Title$
用户管理系统
web.xml
login.jsp
在servlet包下新建LoginServlet
//表现层
public class LoginServlet extends HttpServlet {
@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 {
//根据input标签的name属性获取前端提交的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
//调用service
UserService userService = new UserServiceImpl(this);
//将获得的username,password传递给User
User user=userService.login(username,password);
//登录判断
if (user!=null){
//如果登录成功,则跳转到select_user.jsp
resp.sendRedirect("selectUserServlet");
}else {
//如果登录失败,则跳转到login.jsp
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
}
web.xml
login
com.by.servlet.LoginServlet
login
/login
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
}
mapper包下的UserMapper.xml接口
登陆页面要要跳到select_user.jsp页面
在servlet包下新建SelectUserServlet
public class SelectUserServlet extends HttpServlet {
@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 {
//调用UserService查询List
UserService userService = new UserServiceImpl(this);
List userList = userService.selectUser();
//把List送到select_user.jsp
req.setAttribute("userList", userList);
req.getRequestDispatcher("select_user.jsp").forward(req, resp);
}
}
web.xml
selectUserServlet
com.by.servlet.SelectUserServlet
selectUserServlet
/selectUserServlet
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
List selectUser();
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
@Override
public List selectUser() {
return userMapper.selectUser();
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
List selectUser();
}
mapper包下的UserMapper.xml接口
测试结果
1
2
在select_user.jsp添加新增链接
新建add_user.jsp
<%--
Created by IntelliJ IDEA.
User: Hero
Date: 2023/12/29
Time: 11:01
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
新增
在servlet包下新建addUser
public class addUser extends HttpServlet {
@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 {
//1、接收参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
Integer age = Integer.valueOf(req.getParameter("age"));
String address = req.getParameter("address");
User user = new User(username, password, sex, age, address);
//2、调用service,把user保存到数据库
UserService userService = new UserServiceImpl(this);
userService.addUser(user);
//3、重定向到SelectUserServlet
resp.sendRedirect("selectUserServlet");
}
}
web.xml
addUser
com.by.servlet.addUser
addUser
/addUser
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
List selectUser();
void addUser(User user);
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
@Override
public List selectUser() {
return userMapper.selectUser();
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
sqlSession.commit();
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
List selectUser();
void addUser(User user);
}
mapper包下的UserMapper.xml接口
INSERT INTO user
username,
password,
sex,
age,
address,
VALUES
#{username},
#{password},
#{sex},
#{age},
#{address},
测试结果
1
2
在select_user.jsp添加删除链接
在servlet包下新建DeleteUserServlet
public class UpdateUserServlet extends HttpServlet {
@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 {
//1、接收参数
Integer id = Integer.valueOf(req.getParameter("id"));
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
Integer age = Integer.valueOf(req.getParameter("age"));
String address = req.getParameter("address");
User user = new User(id, username, password, sex, age, address);
//2、调用service,修改user
UserService userService = new UserServiceImpl(this);
userService.updateUserById(user);
//3、重定向到SelectUserServlet
resp.sendRedirect("selectUserServlet");
}
}
web.xml
deleteUser
com.by.servlet.DeleteUserServlet
deleteUser
/deleteUser
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
@Override
public List selectUser() {
return userMapper.selectUser();
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
sqlSession.commit();
}
@Override
public void deleteUser(Integer id) {
userMapper.deleteUser(id);
sqlSession.commit();
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
}
mapper包下的UserMapper.xml接口
INSERT INTO user
username,
password,
sex,
age,
address,
VALUES
#{username},
#{password},
#{sex},
#{age},
#{address},
DELETE FROM user WHERE id=#{id}
测试结果
在select_user.jsp增加修改链接
修改数据首先要获取被修改的数据
在servlet包下新建GetUserServlet
public class GetUserServlet extends HttpServlet {
@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 {
//1、接收参数
Integer id = Integer.valueOf(req.getParameter("id"));
//2、调用service,根据id查询user
UserService userService = new UserServiceImpl(this);
User user = userService.getUserById(id);
//3、user送到update_user.jsp
req.setAttribute("user", user);
req.getRequestDispatcher("update_user.jsp").forward(req, resp);
}
}
web.xml
getUserServlet
com.by.servlet.GetUserServlet
getUserServlet
/getUserById
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
User getUserById(Integer id);
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
@Override
public List selectUser() {
return userMapper.selectUser();
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
sqlSession.commit();
}
@Override
public void deleteUser(Integer id) {
userMapper.deleteUser(id);
sqlSession.commit();
}
@Override
public User getUserById(Integer id) {
return userMapper.getUserById(id);
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
User getUserById(Integer id);
}
mapper包下的UserMapper.xml接口
INSERT INTO user
username,
password,
sex,
age,
address,
VALUES
#{username},
#{password},
#{sex},
#{age},
#{address},
DELETE FROM user WHERE id=#{id}
测试结果
在servlet包下新建UpdateUserServlet
public class UpdateUserServlet extends HttpServlet {
@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 {
//1、接收参数
Integer id = Integer.valueOf(req.getParameter("id"));
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
Integer age = Integer.valueOf(req.getParameter("age"));
String address = req.getParameter("address");
User user = new User(id, username, password, sex, age, address);
//2、调用service,修改user
UserService userService = new UserServiceImpl(this);
userService.updateUserById(user);
//3、重定向到SelectUserServlet
resp.sendRedirect("selectUserServlet");
}
}
web.xml
updateUserById
com.by.servlet.UpdateUserServlet
updateUserById
/updateUserById
以下内容可在servlet类中Alt+Enter快捷键出来(先把Servlet类写完整)
在service包下的UserService接口
public interface UserService {
User login(String username, String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
User getUserById(Integer id);
void updateUserById(User user);
}
UserServiceImpl类
public class UserServiceImpl implements UserService {
private SqlSession sqlSession;
private UserMapper userMapper;
//加载UserMapper类
public UserServiceImpl(HttpServlet httpServlet) {
ServletContext servletContext = httpServlet.getServletContext();
sqlSession = (SqlSession) servletContext.getAttribute("sqlSession");
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Override
public User login(String username, String password) {
//调用dao
return userMapper.login(username,password);
}
@Override
public List selectUser() {
return userMapper.selectUser();
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
sqlSession.commit();
}
@Override
public void deleteUser(Integer id) {
userMapper.deleteUser(id);
sqlSession.commit();
}
@Override
public User getUserById(Integer id) {
return userMapper.getUserById(id);
}
@Override
public void updateUserById(User user) {
userMapper.updateUserById(user);
sqlSession.commit();
}
}
mapper包下的UserMapper接口
public interface UserMapper {
User login(@Param("username") String username, @Param("password") String password);
List selectUser();
void addUser(User user);
void deleteUser(Integer id);
User getUserById(Integer id);
void updateUserById(User user);
}
mapper包下的UserMapper.xml接口
INSERT INTO user
username,
password,
sex,
age,
address,
VALUES
#{username},
#{password},
#{sex},
#{age},
#{address},
DELETE FROM user WHERE id=#{id}
UPDATE user
username=#{username},
password=#{password},
sex=#{sex},
age=#{age},
address=#{address},
WHERE id=#{id}
测试结果
1
2
1
2