发表于: 2019-05-28 22:44:10
1 603
1. 简单了解html标签
2. 在页面进行增删改查的操作
a增
@RequestMapping("/adduser")
//用这个方法来转到增加的页面,类型为String,返回到add.jsp页面
public String adduser() {
return "jsp/add";
}
//增加页面跳转完毕后,点击修改跳转到add方法的地址,进行数据库的操作,这里可以不反回User.jsp,可以重写页面显示修改成功与否
@RequestMapping("/add")
public String add(User user, Model model) {
System.out.println("user is ===========" + user);
int userAdd = userDao.add(user);
if (userAdd == 1) {
System.out.println("add is ===========" + userAdd);
model.addAttribute("code", "1");
model.addAttribute("message", "增加成功");
} else {
model.addAttribute("code", "0");
model.addAttribute("message", "增加失败");
}
return "jsp/User";
}
增的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>adduser</title>
</head>
<body>
<form action="/WebTask_war_exploded/user/add" name="user">
姓名<input type="text" name="name"><br/>
修真类型<input type="text" name="type"><br/>
入学时间<input type="text" name="admissionTime"><br/>
毕业学校<input type="text" name="graduatedSchool"><br/>
日报链接<input type="text" name="daliyLink" }><br/>
立愿<input type="text" name="volunte"><br/>
师兄<input type="text" name="brother"><br/>
途径<input type="text" name="source"><br/>
创建时间<input type="text" name="createAt"><br/>
修改时间<input type="text" name="updateAt"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
2.删
//删除(在主页面直接删除不需要跳转页面)
@RequestMapping("/delete")
public String delete(int id, Model model) {
int userDelete = userDao.delete(id);
if (userDelete == 1) {
System.out.println("delete is ===========" + userDelete);
model.addAttribute("code", "1");
model.addAttribute("message", "删除成功");
} else {
model.addAttribute("code", "0");
model.addAttribute("message", "删除失败");
}
return "jsp/User";
}
删的页面:在查全部的页面中,直接由删除的连接:
C修改
//修改:修改是先进行查找出这条数据,再对这条数据进行修改,弹出界面,修改完毕之后进行提交
//查找一个
@RequestMapping("/findById")
public String update(int id, Model model) {
System.out.println("查找" + id + "行");
User userFindById = userDao.findById(id);
model.addAttribute("find", userFindById);
System.out.println("findnoe is ===========" + userFindById);
return "jsp/update";
}
//修改
@RequestMapping("/update")
public String update(User user, Model model) {
System.out.println("修改数据=====" + user);
int userUpdate = userDao.update(user);
if (userUpdate == 1) {
System.out.println("修改数据=====" + userUpdate);
model.addAttribute("code", "1");
model.addAttribute("message", "修改成功");
} else {
model.addAttribute("code", "0");
model.addAttribute("message", "修改失败");
}
return "jsp/User";
}
修改页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>update</title>
</head>
<body>
<form action="/WebTask_war_exploded/user/update" name="user">
<input type="hidden" value="${find.id}" name="id"><br/>
姓名<input type="text" name="name" value="${find.name}"><br/>
修真类型<input type="text" name="type" value="${find.type}"><br/>
入学时间<input type="text" name="admissionTime" value="${find.admissionTime}"><br/>
毕业学校<input type="text" name="graduatedSchool" value="${find.graduatedSchool}"><br/>
日报链接<input type="text" name="daliyLink" value="${find.daliyLink}"><br/>
立愿<input type="text" name="volunte" value="${find.volunte}"><br/>
师兄<input type="text" name="brother" value="${find.brother}"><br/>
途径<input type="text" name="source" value="${find.source}"><br/>
创建时间<input type="text" name="createAt" value="${find.createAt}"><br/>
修改时间<input type="text" name="updateAt" value="${find.updateAt}"><br/>
<input type="submit" value="修改">
</form>
</body>
</html>
3.分页
UserDao
//该分页sql语句的执行方法,查询每页一定量的数据
List<User> selectPage(@Param("startNum") int start, @Param("pageSize") int pageSize);
//查询数量sql语句的执行方法
int selectCount();
Usermapper
<select id="selectPage" resultMap="BaseResultMap">
<!--从第几条开始,每页多少个-->
select * from task00 limit #{startNum},#{pageSize}
</select>
<!-- 查询符合该条件的数量-->
<select id="selectCount" resultType="int">
select count(*) from task00
Usercontroller
@RequestMapping("/task")
public String pagination(Model model, @RequestParam(value = "number", defaultValue = "1") int pageNow) {
System.out.println("now" + pageNow);
//声明上一页、下一页、每页数据数量,数据总量
int prePage;
int nextPage;
int pageSize = 10;
int allRow = userDao.selectCount();
int totalPages = allRow % pageSize == 0 ? allRow / pageSize : allRow / pageSize + 1;
//*上一页设定
// 如果输入的当前页大于一,那么前一页就是减一,否则就是当前页
if (pageNow > 1) {
prePage = pageNow - 1;
} else {
prePage = pageNow;
}
//*下一页设定
// 如果输入的当前页小于总页数,那么下一页就是加一,否则就是当前页
if (pageNow < totalPages) {
nextPage = pageNow + 1;
} else {
nextPage = pageNow;
}
/*分页思路:分页需要的几个元素:首页,上一页,下一页。尾页,当前页,总页数,跳页
*首页可以直接设定为页码数为1.。。。。尾页可以直接设定为总页数。
* 上一页需要用if条件与第一页进行判定。。。。。。下一页需要用if条件和尾页进行判定
* 跳转页可以直接输入数字,当前页可以直接读取
* 跳页也是由两个if条件来设定范围的
*/
List<User> users = userDao.selectPage((pageNow - 1) * 10, 10);
System.out.println("总页数" + totalPages);
model.addAttribute("number", pageNow);
model.addAttribute("prePage", prePage);
model.addAttribute("user", users);
model.addAttribute("nextPage", nextPage);
model.addAttribute("totalPages", totalPages);
return "jsp/User";
}
Jsp
<%-- 这是一个表,没有界限--%>
</table>
<td><a href="/WebTask_war_exploded/user/task?number=1">首页</a></td>
<td><a href="/WebTask_war_exploded/user/task?number=${prePage}">上一页</a></td>
<td><a href="/WebTask_war_exploded/user/task?number=${nextPage}">下一页</a></td>
<td><a href="/WebTask_war_exploded/user/task?number=${totalPages}">尾页</a></td>
<td>当前第${number}页</td>
<td>总共${totalPages}页</td>
<br>
<form action="/WebTask_war_exploded/user/task">
跳转<input type="text" name="number">页
<input type="submit" value="GO">
</form>
</body>
</html>
第一次分页是这样,数据并没有改变,晚上jetty安装没成功,回去继续思考的时候发现了问题
最终版
这是因为没有将分页中的数据导进来,用的还是原来的总表
这条语句:<c:forEach items="${user}" var="user">
4.rest风格
例子:
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(Model model) {
System.out.println("进来没===================");
List<User> list = userDao.findAll();
System.out.println("list is ===========" + list);
model.addAttribute("list", list);
model.addAttribute("code", "1");
model.addAttribute("message", "查找成功");
return "jsp/User";
}
· 5. .本地运行Jetty:run 插件,修改端口号为8080,浏览器访问任意查询接口,判断是否可以正确返回数据
出现问题:
重装了 一次又出现问题了,明天再看看吧。
小知识:
1..事务管理:一系列的操作中不能有一个失败,这个事务才算成功,有一个操作失败的话name任务会终止回到原来的的初始阶段
2.rest风格:
之前看的有点蒙,今天突然看到一个实例,豁然开朗
Rest是什么呢,首先来了解一下API,比如微信程序对外提供了一个API来用于进行数据的交互,你可以通过api将其他软件的东西分享到微信。而建立API要遵守一种规范,这个规范中有一种就叫做rest。
之前前后端未分离的时候,前后端可以使单线程的,比如但是只有电脑,数据在后端直接传输到电脑的页面,但是后来有了手机,ipad等服务端,需要一个统一的接口来实现各种服务端的介入,这时候一定规范API就产生了
之前我们通过url来操作数据的时候,里面包含了动词,比如delete、add是有了rest后,url直接指向对象。不包含动作,增删改查是由GET、POST、PUT、DELETE进行实现。
是面向资源的
GET /rest/api/getDogs --> GET /rest/api/dogs
获取所有小狗狗
GET /rest/api/addDogs --> POST /rest/api/dogs
添加一个小狗狗
GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id
修改一个小狗狗
GET /rest/api/deleteDogs/:dog_id --> DELETE /rest/api/dogs/:dog_id
删除一个小狗狗
GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
网络详解:1左边的这种设计,很明显不符合REST风格,上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs...已经包含了对资源的操作,这是不对的。相反右边却满足了,它的操作是使用标准的HTTP动词来体现。
Soap是面向操作的
明天计划:
理解一下API
继续完成任务
遇到问题:安装jetty
收获:
学会了分页,用html涉及简单的页面,理解了rest风格的形成意义
评论