系统代码地址:代码下载查看地址
- 创建数据库以及表时一定要在创建的时候就指定编码为utf8,否则会出现乱码,创建完之后修改编码方式也可能是无效的,只能重新删除创建。(有很多关于修改编码方式解决乱码问题的,但是我试了很多都无效,最后只有删除重新创建并且在创建之初就指定编码方式为utf8才有效)。
-- 创建管理员表
CREATE TABLE `manager`(
`mid` INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
`password` VARCHAR(20)
)CHARACTER SET utf8 COLLATE utf8_general_ci
同时在数据库连接工具类中也要指定编码方式:dbUrl = "jdbc:mysql://localhost:3306/homework_javaweb01?characterEncoding=UTF-8"
2. 记住JSP中代码也是从上往下执行的,所以jsp中越上面的代码会越先执行。而对于<%%>区域中的java代码本质就是会转化为servlet中的service()方法执行,所以就算分成几段(几个<%%>)中的代码,只要看作都是在一个service()方法中执行就可以理解为啥不在同一段<%%>中定义的变量,在后面<%%>中也能获取使用了
3. 总结前端与servlet的几种传值方式:前端与servlet的几种传值方式
4. JSP的执行顺序是从上到下的,因此java部分代码和html之间是可以互相夹杂的(但是注意被夹住的html内容必须要是html的,不能先写java代码,这样会误以为html内容是java代码而报错)
比如:
<%
//获取删除结果并使用弹窗alert显示删除结果
String deleteResult = (String) request.getAttribute("deleteResult");
System.out.println("删除结果:" + deleteResult);
if (deleteResult != null) {
%>
<script type="text/javascript">
alert("<%=deleteResult%>");
</script>
<%
}
%>
当然,也可以用out.print()直接输出加上标签的字符串,比如:
for (Student s : students) {
out.print("<tr>" + "<td>" + s.getsNum() + "</td>" +
"<td>" + s.getStuName() + "</td>" +
"<td>" + s.getGender() + "</td>" +
"<td>" + s.getBirthday() + "</td>" +
"<td>" + s.getEmail() + "</td>" +
"<td>" + s.getRemark() + "</td>" +
"<td>" +
"<a href=\"updateTransfer?sNum=" + s.getsNum() //就是这边直接传学号到转发servlet即可
+ "\" class=\"btn btn-warning\">修改</a> " +
"<a class=\"btn btn-danger\" οnclick=\"deleteConfirm(" + s.getsNum() +")\">删除</a>" +
"</td>" +
"</tr>");
}
- 表单回显功能怎么实现:查询–>显示
表单回显实现 - 管理员id在登录之后是应该通用的,因此要在登录之后用application内置对象设置为全局变量。用session会在半小时后无效,不行
<%
//获取当前登录的管理员id
int mid = ((Manager) session.getAttribute("manager")).getMid();
//登录成功之后该管理员信息将是在整个服务器上所有用户(servlet)之间共享
application.setAttribute("mid", mid);
%>