在构建一个Java web项目中。比如我以学生表为例子.对学生表的数据进行增删改查如何进行呀。
前端技术与服务器数据交互技术:离不开前端访问服务器的数据
在这里我们学了两种方案。方案一利用上个学Servlect+jsp页面编程技术.
方案二利用这个学期所学AJax+JSON+HTMl.在HTML中有包含这些内容HTML+JavaScript+AJax+jQuery+JSON
.jQuery中包含选择器 事件 效果 在对单张表的增删改查中最难理解
是修改因为他要步骤最多。
首先第一部要获得你要修改那一条数据的id
第二步你要用jQuery的属性选择器将数据显示在页面上
第三步 你要将修改后的页面数据信息发回到服务器 经历MVC 三层架构 将修改后上,信息在数据库中更新
第四步将更新后的数据刷新到页面上查看。
总结遇到修改不用慌
先分清楚流程是什么 利用的技术是 Ajax+JSON解析。当我要修改的的记录编号ID 为1001001 时候
首先浏览器要将ID编号发送给服务器 在控制层中
将浏览器发过来的ID等于1001001接收
利用的是resquest 对象 然后将ID 参数发送到 业务逻辑层 在到数据访问层
为了更好的理解一般是从数据访问层的接口中定义方法
Map<String, Object> getInfoStudentById(int id);
在数据反问层实现类中实现
DBUtil.jt.queryForMap("select * from student where id=?", new Object[]{id});}
这里数据反问层使用的方案是
Ajax+Json+Mvc+JdbcTemplate+Servlect+Html+JavaScript+Jquery+Mysql
同理在业务实现类的接口
Map<String, Object> getInfoStudentById(int id);
在业务逻辑层接口的实现类中实现。
在控制层中调用以下方法
Map<String, Object> infoStudentById = service.getInfoStudentById(Integer.parseInt(id));
//我要获得 年龄 姓名 电话 地址
List<String> age = service.getAge();
List<String> name = service.getName();
List<String> phone = service.getPhone();
List<String> address = service.getAddress();
第二步步分上面的数据利用什么方式封装起来
Map<String, Object> map = new HashMap<>();
map.put("infoStudentById", infoStudentById);
map.put("age", age);
map.put("name", name);
map.put("phone", phone);
map.put("address", address);
new ObjectMapper().writeValue(response.getWriter(), map);
比如在浏览器中要在input标签中显示性别 年龄如何实现呢!
$("input[name=age]").val(json.infoStudentById.age)//将数据库中的年龄展示在页面中
(json.infoStudentById.sex = "男") {
$("input[value='男']").attr("checked", true)
} else {
$("input[value='女']").attr("checked", true)
}
浏览器中页面完成修改后数据库也要更新
因此根据MVC三层架构思想
控制器要接收到浏览器要修改的页面数据信息
在控制层的第一步
Map<String, String[]> parameterMap = request.getParameterMap();
String id = (String) request.getSession().getAttribute("id");
接下来从数据访问层的接口中定义方法
int updateStudent(Map<String, Object> map);
同理在业务逻辑层中的接口中写下以下方法
int updateStudent(Map<String, Object> map);
最终控制器回执行下面的内容
int student = service.updateStudent(parameterMap, Integer.parseInt(id));
if(student>0){
System.out.println("恭喜用户修改信息已完成");
response.sendRedirect("workList1.html");
}
最后修改页面完成。仔细分析发现也不是那么难吧!🤗
到了服务器中:在服务器中要构建三层. 方案一:在构建这三层种你可以利用普通的Java方式构建三层。方案二:使用框架的方式构建三层. 在控制层中你可以使用方案一:使用Servlect 方案二使用springMVC框架。在这里你有两种方案。1 配置文件的方式 方案2 利用注解的方式
在业务逻辑逻辑层 创建对象使用spring框架。spring中分为好多模块利用bean管理。在spring框架中你可以使用IOc三种方案 1 配置文件的注入 2 注解的方式注入 3 不需要配置文件注入 建立一个工具类使用注解的方式
在数据反问层中你可以使用的是MyBatis框架。在数据访问层中正对MyBatis框架有三种方案。方案一利用配置文件注入。方案二利用 配置文件注入加接口文件的方式。方案三利用MyBats注解的方式。
在写Java web项目的过程中首先用到的数据库中的知识创建数据库创建数据库的表格。
在idea中新建项目 导入必备的SSM架包 配置资源文件的信息 配置web-xml文件信息。
第一个功能 查询数据库中所有数据信息。
首先从数据库将SQL语句写好 select * from student
然后分析查到的数据利用什么方式存放起来呢!
在此之前要建立好三个包 分别是控制层的 实现类 业务逻辑层的接口和实现类 再是数据反问层的接口和实现类 如果数据反问层使用的MyBats注解的方式只需写个接口文件。
在查询的数据库中的表中肯定是多条记录 每个条记录中有多个字段 因此使用Java存放的方式是
在这里我使用的是MVC三层架构的普通方式介绍
因此你要在数据反问层的接口中定义方法
List<Map<String, Object>> getStudentList();}或者是List<Student,student>gestudentList();}
同理在业务逻辑思层中:
List<Map<String, Object>> getStudentList();}或者是List<Student,student>gestudentList();}
那么如何将控制层 业务逻辑层 数据反问层 连接起来呢!
在控制层中: ITeacherService service = new TeacherServiceImp();
在业务逻辑层中
ITeacherDao dao=new TeacherDaoImp();
然后层层返回 到控制层
List<Map<String, Object>> teacherList = service.getTeacherList();
Map<String, Object> map = new HashMap<>();
map.put("list", teacherList);
new ObjectMapper().writeValue(response.getWriter(), map);
发到HTML页面进行JSON解析。
JSON解析后会将数据展示在页面。
写出SQL语句
delete from emp where id=?
分析SQL语句在Java中利用什么方式存放起来的
在增删改中返回值为int类型值。删除是根据编号删除的因此控制器要将浏览器发来的ID接收 利用是是resquest对象
在控制层调用业务逻辑层的方法利用。
IEmpService service=new EmpServiceImp()
同理在业务逻辑层是实现类中
IEmpDao dao = new EmpDaoImp();
在业务逻辑层接口中定义方法利用int del(int Id)
同理在数据访问层接口中定义方法
int del(int Id)
int delete service.delete(ids);if(delete>0){response.sendRedirect("workList.html"); }
利用重定向的方式
SQL语句当我点击按钮跳转到一个新的页面用于增加数据的信息。
当用户增加成功要进行页面的查询操作。
insert into emp values(?,?,?,?,?,?)",
返回值为int类型 在没条记录中但对应的属性和值。
在业务逻辑层接口中定义方法 int add(Map<String, Object> map);
同理在数据访问层
int add(Map<String, Object> map);
在控制层中
Map<String, String[]> parameterMap = request.getParameterMap();
int add = service.add(parameterMap);
if (add > 0) {
//添加成功,跳回主页面
response.sendRedirect("index.html");
}