目录
Ⅱ.resp.sendRedirect()和req.getRequestDispatcher().forward(req,resp)
前言-项目学习目的
希望了解到JavaWeb开发的一般流程,重点学习后端业务逻辑处理。这是第一篇笔记,所以介绍一下技术栈和框架,剩下的笔记以记录后端代码为主
一、技术栈介绍
项目用到的技术栈主要还是Servlet+JSP + MySQL,对数据库的操作是通过Apache的DBUtils来实现 的。简化了JDBC(Java Database connect)的操作。在页面呈现使用HPlus一套基于bootstrap的页面模板来实现。
二、项目架构
1.结构草图

对Servlet的理解:处理客户端的请求(通过doGet和doPost)
对Service,Dao分层的理解:充分解耦,减少代码之间的依赖层度;将业务逻辑处理和数据处理(对数据库)分开,便于管理。
三、代码记录
1.实现MyDbUtils的工具类
(思考:工具类应该是唯一的,不需要实例化,这里通过将MysqlDataSource设为静态成员来实现数据源对象唯一。或许使用单例模式效果更好)
public class MyDbUtils {
private static MysqlDataSource dataSource;
static{
dataSource=new MysqlDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/librarymanagent?serverTimezone=UTC");
dataSource.setUser("root");
dataSource.setPassword("031024");
}//static块初始化
public static QueryRunner getQueryRunner(){
return new QueryRunner(dataSource);//传入数据源dataSource;
}
}
2. Userdao的list(查询所有用户)
/**
* 用户信息Dao的实现类
*/
public class UserDaoimpl implements IUserDao {
// private final QueryRunner queryRunner = MyDbUtils.getQueryRunner();
@Override
public List<SysUser> list(SysUser user) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "select * from sys_user ";
try {
List<SysUser>list=queryRunner.query(sql, new ResultSetHandler<List<SysUser>>() {//lambda表达式的应用
@Override
public List<SysUser> handle(ResultSet resultSet) throws SQLException {
List<SysUser> list = new ArrayList<>();
while(resultSet.next()){
SysUser user=new SysUser();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setNickname(resultSet.getString("nickname"));
user.setRoleId(resultSet.getInt("role_id"));
user.setRolename(resultSet.getString("rolename"));
user.setCreateTime(resultSet.getDate("create_time"));
list.add(user); // 把查询的记录封装到了集合容器中
}
return list;
}
});
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
3.Servlet
Ⅰ.doGet()和doPost()
/**
* urlPatterns:提供给客户端访问Servlet的请求路径
*/
@WebServlet(name = "userServlet",urlPatterns = {"/userServlet"})
public class UserServlet extends HttpServlet {
private final IUserService service = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
}
}
<a class="J_menuItem" href="/userServlet">用户管理</a>
Get是最常用的方法,通常用于请求服务器发送某个资源。
POST方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。
点击用户管理就会触发userServlet,userServlet判断请求是Get还是Post,然后对应触发doGet还是doPost。
Ⅱ.resp.sendRedirect()和req.getRequestDispatcher().forward(req,resp)
request携带请求地址、参数,用于寻找需要执行的Servlet和其参数。
response就是要返回给浏览器的结果对象

req.getRequestDispatcher().forward(req,resp)通常与req.setAttribute()一起使用
本文介绍了JavaWeb开发的一个基础项目,技术栈包括Servlet、JSP和MySQL,借助Apache的DBUtils简化JDBC操作。项目采用Service、Dao分层架构,讲解了如何实现MyDbUtils工具类、UserDao的查询方法以及Servlet中的doGet和doPost处理。此外,还讨论了单例模式和数据转发方法。
&spm=1001.2101.3001.5002&articleId=132014347&d=1&t=3&u=1f5a86062e3c4098b471f5af1ae0f054)
2751

被折叠的 条评论
为什么被折叠?



