JavaWeb 项目开发中的技术总结
前言:
在项目开发过程中的一点点指导思想
1、环境准备
- win系统
- Eclipse 开发平台
- maven
- tomcat
- Mysql 数据库,mysql5.6
- 操作数据库的jar 包
- JDBC 连接数据库的jar,mysql-connector-java-xxx.jar
- DbUtils 操作数据库jar包,基于 JDBC的封装
- 数据源jar,可以有c3p0、dbcp
- 日志文件,log4j
- 前台编写jquery需要的js
- 编写前台使用的公用样式 bootstrap
2、需求
创建一个表,对该表进行增删改查
3、数据库创建
create database XXX;
create table XXX ();
4、详细设计
- 数据库操作方法的封装
使用数据源来获取连接和释放连接
将基本的CRUD方法封装,以供子类继承或者调用
- 实体类,实体的数据库操作
- 实现业务逻辑的servlet
在web.xml 中配置出servlet 对应的路径,我们本来的一个做法是 在doGet 或者 doPost中将路径拦截,然后用 拦截路径得到的methodName 来调用对应的方法。缺点:每增加一个方法,除了在servlet中要配置一条路径外,dopost中也得将路径加进去
现在有个方法,如果路径与对应的方法名取值相同,可以采用映射
1234567891011121314//1 获取servlet路径 诸如:/add.do
String servletPath=req.getServletPath().substring(
1
);
//去除/和.do得到类似于add这样字符串
String methodName=servletPath.substring(
0
,servletPath.length()-
3
);
//System.out.println(methodName);
try
{
//利用反射获取获取methodName对应的方法
Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.
class
,HttpServletResponse.
class
);
//利用反射获取方法
method.invoke(
this
, req,resp);
}
catch
(Exception e) {
//出错时候响应出来
resp.sendRedirect(
"error.jsp"
);
}
对于request、response 的编码问题
在servlet 中跳转页面,我们需要将后台的对象在传回前台,可以用 request.setAttribute(name,value);
request.getRequestDispatcher(forwordPath).forward(request,response); - 新添加
新添加的信息有哪些需要验证错误,比如name是否被占用,电话号的格式,email的格式之类,若验证通过,则将表单封装为一个实体对象,然后操作save数据库,成功则重定向到 success.jsp 页面,失败则提示错误信息,并保留在当前页面 - 修改
获取请求参数id,根据id 得到实体对象,重定向到 修改页面
验证参数通过后,将传过来的表单参数作为一个信息对象,调用操作数据库的修改方法,成功则跳转到查询页面
判断一个值唯一,可以用old 和 new 两个参数作为对比,如果新旧不相同,则在数据库中其是否存在 - 删除
获取id的值,执行提示是否删除,调用Dao的删除方法,删除成功跳转删除(批量删除?)
作者:panie
出处:http://www.cnblogs.com/panie2015/
如果您希望与我交流互动,欢迎加我微信
本文内容为作者辛苦整理书写,欢迎转载,但请保留文章出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?