一、servlet的跳转:
1.可以从servlet跳转到另外一个servlet(删除数据之后返回到刷新查询servlet)
2.可以从servlet跳转到前台页面(注册成功返回登录页面)
转发跳转: 只需1次请求即可完成 效率高 URL地址不会改变 例如从B转发到A URL地址依然是B
重定向跳转: 只需2次请求即可完成 效率低 URL地址会改变 例如从B定向到A URL地址就是A
总结:能用转发就用转发。但是以下情况不推荐:涉及到敏感操作一定不能使用转发,
涉及到注册操作.涉及到增删改都推荐使用重定向
备注:超链接本质就是重定向跳转
二、Servlet的四大作用域
有些情况下:我们需要实现后台servlet的数据共享(先掌握这里)
有些情况下:我们需要实现后台servlet和前台页面的数据共享(暂时不讲解)
比如:后台查询到了数据 需要丢给前台去渲染
四大作用域:pageContext < request < session < application
pageContext作用域:仅在当前页面有效,只要页面发生了跳转就失效。 所以不用
request作用域:重点掌握:作用域一次请求有效。超过一次请求就失效,所以切忌使用重定向跳珠
session作用域:重点掌握:作用域一次回话有效。(浏览器打开到关闭为一次回话)
application作用域:了解即可:作用域全局有效。只想项目不关,就一直生效,例如网站访问量
四、测试四大作用域
①<a href="FServlet">测试request作用域</a> <hr>
@WebServlet("/FServlet")
public class FServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// request作用域:重点掌握:作用域一次请求有效。超过一次请求就失效
//如何存储数据 注意key要保证唯一,否则会被覆盖
// req.setAttribute("key","aa");
req.setAttribute("username","张三");
req.getRequestDispatcher("ZServlet").forward(req,resp);
// resp.sendRedirect("ZServlet");
}
}
②<a href="GServlet">测试session作用域</a> <hr>
@WebServlet("/GServlet")
public class GServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// session作用域:重点掌握:作用域一次会话有效。浏览器关闭就失效
//如何存储数据 注意key要保证唯一,否则会被覆盖
//1.获取session对象
HttpSession session = req.getSession();
//2.存值
session.setAttribute("username","李四");
//简写req.getSession().setAttribute("aa,","xx");
req.getRequestDispatcher("ZServlet").forward(req,resp);
// resp.sendRedirect("ZServlet");
}
③<a href="HServlet">测试application作用域</a> <hr>
@WebServlet("/HServlet")
public class HServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// application作用域:了解即可:作用域全局有效。只想项目不关,就一直生效,例如网站访问量
//如何存储数据 注意key要保证唯一,否则会被覆盖
//1.获取application对象
ServletContext context = req.getServletContext();
//2.存值
context.setAttribute("username","王五");
req.getRequestDispatcher("ZServlet").forward(req,resp);
// resp.sendRedirect("ZServlet");
}
五、网页的三大校验
第一层:前台校验,一般通过JS可以实现。 可以解决大部分的问题。
缺点1:可以通过浏览器关闭使用JS
缺点2:可以通过各种工具来绕过JS,直接访问Java后台代码 例如postman等
第二层校验:后台Java校验 一般就是长度校验,非空校验等等
第三层校验:数据库校验 一般通过约束来实现。
主键约束
外键约束
自增约束
唯一约束
非空约束
检查约束 : 近些年才开放其功能 之前仅仅是支持语法,不支持功能。 现在已经完全开放 使用高版本的mysql和navicat即可使用。
默认约束