- 整体设计架构
graph LR
JSP-->Servlet;
Servlet-->DAO;
DAO-->MySQL;
Servlet-->JSP;
DAO-->Servlet;
MySQL-->DAO;
- View:JSP
- 呈现数据:从request中获取Servlet放入的属性
- 接收用户的输入
- 编写JS代码给出对应的提示
- Controller:Servlet
- 获取请求信息:获取请求参数
- 验证请求参数的合法性:验证失败需要返回页面,并给出提示信息
- 把请求参数封装为一个JavaBean
- 调用DAO的方法获取返回的结果
- 把返回的结果放入到request中
- 响应页面:转发重定向
- Model:DAO
- 获取数据库连接
- 执行CRUD(增删改查)操作
- 返回结果
- Model:MySQL
- 用于存储数据
- 用于存储数据
注意:
1. 不能跨层访问
2. 只能自上向下依赖,而不能自下向上依赖
- 多个请求对应一个Servlet
- Servlet映射为*.do:可以接受一切.do结尾的请求
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-patten>*.do</url-patten>
</servlet-mapping>
- 在Servletde doGet和doPost方法中:
- 获取ServletPath:/*.do:
String servletPath=request.getServletPath();
- 去除/和.do,得到*的字符串:
String methodName=servletPath.subString(1); methodName=methodName.subString(0),methodName.length()-3);
- 利用反射获取methodName对应的方法
Method method=getClass().getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class); //利用反射调用对应的方法 method.invoke(this,request,response);
- 获取ServletPath:/*.do:
- 查询:MVC整个流程
query.do-->doPost-->query-->JSP
- 模糊查询
- SQL:
String sql="SELECT id,name,address,phone FROM customers WHERE "+"name LIKE ? AND address LIKE ? AND phone LIKE ?"
- 填充占位符:重写get方法
public String getName(){
if(name==null){
name = "%";
}else{
name="%"+name+"%";
}
return name;
}
- 把查询条件封装为一个JavaBean