关于JavaWeb相关的一些小基础知识

关于JavaWeb相关的一些小基础知识

1.在Mysql插入外键的两个方法:

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 一方表名(一方字段)

关于JavaWeb相关的一些小基础知识_第1张图片

2.重定向和转发的区别?

1.重定向
a.重定向( response.sendRedirect() )属于跳转页面的一种方式,是一次响应两次请求的,所以不是同一个request 就不能读取转向前存的值
b.每次响应后,地址栏都发生了改变,是目标文件地址
c.可以转向到本web应用之外的页面和网站,所以转向速度要
d.URL所包含的“/”表示根目录路径
关于JavaWeb相关的一些小基础知识_第2张图片
2.转发
a.转发( request.getRequestDispatcher().forward(request,response) )属于跳转页面的一种方式 ,一次响应一次请求相当于方法调用,是同一个request 可以通过此来传递一些数据或者session信息
b.两次执行后,地址栏都不变 仍是当前文件的地址
c.不能转向到本web应用之外的页面和网站,所以转向速度
d.URL所包含的“/”表示应用程序(项目)的路径
关于JavaWeb相关的一些小基础知识_第3张图片

3.确保搜索框的数据回显

因为是用的转发(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);
 学生名称: 

 学生学号: 

这样就能保证在搜索完返回后,其搜索的内容还能保存在搜索框内

4.双编码确保文件以正确的格式传输

数据在服务器和数据库之间传输时容易出现乱码,导致正常获取数据。

首先在创建的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

你可能感兴趣的:(关于JavaWeb相关的一些小基础知识)