1.建表时插入
create table Products(
vendid int not null comment '供应商ID',
foreign key (vend_id) references Vendors (vend_id)
)engine=innodb default charset=utf8;
2.建表后插入 (一对多 在多的一方添加字段指向一的一方的某个字段) 前提是两个表中的字段已存在
alter table 多方表名 add foreign KEY(添加的字段) references 一方表名(一方字段)
1.重定向
a.重定向( response.sendRedirect() )属于跳转页面的一种方式,是一次响应两次请求的,所以不是同一个request 就不能读取转向前存的值
b.每次响应后,地址栏都发生了改变,是目标文件地址
c.可以转向到本web应用之外的页面和网站,所以转向速度要慢
d.URL所包含的“/”表示根目录路径
2.转发
a.转发( request.getRequestDispatcher().forward(request,response) )属于跳转页面的一种方式 ,一次响应一次请求相当于方法调用,是同一个request 可以通过此来传递一些数据或者session信息
b.两次执行后,地址栏都不变 仍是当前文件的地址
c.不能转向到本web应用之外的页面和网站,所以转向速度快
d.URL所包含的“/”表示应用程序(项目)的路径
因为是用的转发(request.getRequestDispatcher().forward(request,response))来跳转页面 故跳转后原先输入的值会不存在,这样搜索完之后,搜索框里就没有内容了
故得在转发前将值存入服务器中(req.setAttribute())然后用EL表达式(如代码中的 ${sname} )取出放于搜索框中,部分代码如下:
//在页面跳转前先存值
req.setAttribute("sname",studentName);
req.setAttribute("sno",studentNo);
//转发的形式来跳转页面(跳转到指定的jsp文件)
req.getRequestDispatcher("Educational/student/list.jsp").forward(req,resp);
学生名称:
学生学号:
这样就能保证在搜索完返回后,其搜索的内容还能保存在搜索框内
数据在服务器和数据库之间传输时容易出现乱码,导致正常获取数据。
首先在创建的Servlet文件里,进行如下设置
//1.接受参数-设置编码方式(但是数据库在传输过程中可能也会出现乱码 还得在配置文件中设置编码)
req.setCharacterEncoding("utf-8");
如果是Json格式的话
//在输出给前端时设置编码格式 注意此处用;隔开
resp.setContentType("html/text;charset=utf-8");
//将内容输出给前端(此处的jsonArray是已将结果集转化的Json格式)
PrintWriter writer = resp.getWriter();
writer.print(jsonArray);
然后得设置数据连接的配置文件,如properties文件要在url的后面加上?characterEncoding=utf-8&useUnicode=true,否则写入数据到数据库中会乱码:
driverclass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/students?characterEncoding=utf-8&useUnicode=true
一般来说,进行如上两步能基本保证编码格式,此外还有问题的话可能是其他地方没有进行限制
如在其含有的jsp文件里,确保首行信息里有限定编码格式的代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
还有在建数据库和表时,也应该将编码格式设置成utf-8