9、JavaBean

实体类
JavaBean有特定的写法

  • 必须有一个无参构造
  • 必须有对应的get/set方法
  • 属性必须私有化

一般用来和数据库的字段做映射 ORM
ORM:对象关系映射

  • 表–>类
  • 字段–>属性
  • 行记录–>对象
id name age address
1 冰凝1 123 南昌
2 冰凝2 43 上海
3 冰凝3 5 武汉

Peoria

package com.bing.pojo.bing.pojo;
//实体类,我们一般和数据库中的表一一对应
public class People {private int id;private String name;private int age;private String address;public People() {}public People(int id, String name, int age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

jsp调用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<jsp:useBean id="people" class="com.bing.pojo.bing.pojo.People" scope="page"/>
<jsp:setProperty name="people" property="address" value="江西"/>
<jsp:setProperty name="people" property="age" value="18"/>
<jsp:setProperty name="people" property="id" value="1"/>
<jsp:setProperty name="people" property="name" value="冰凝"/>姓名:<jsp:getProperty name="people" property="name"/>
id号:<jsp:getProperty name="people" property="id"/>
年龄:<jsp:getProperty name="people" property="age"/>
地址:<jsp:getProperty name="people" property="address"/></body>
</html>

10、早些年

什么是MVC:Model view Contrdler 模型、视图、控制器

10、1早些年


用户直接访问控制层,控制层就可以直接操作数据库

Servlet-->CRUD-->数据库
弊端:程序十分臃肿,不利于维护
Servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
架构:没有什么事加一层解决不了的程序猿调用JDBC
|MySQL oracle sqlservel
|

10、2MVC 三层架构


Model

  • 业务处理:业务逻辑(service)
  • 数据持久层:CRUD(Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求(a、form、img…)
    Controller(servlet)
  • 接受用户的请求:(req:请求参数、session信息…)
  • 交给业务处理对应的代码
  • 控制视图的跳转
登入-->接收用户登入的请求-->处理用户的请求
(获取用户登录的参数,username、password)-->
交给业务层处理登录业务(判断密码是否正确:事务)-->
Dao层查询用户名和密码是否正确-->
数据库

11、Filter

Filter:过滤器:用来过滤网站的数据

Filter:开发步骤

  1. 导包

  2. 编写过滤器
    1、导包不要错误

    2、实现Filter接口,重写方法

public class CharterFilter implements Filter {//    初始化  web服务器启动已经初始化了public void init(FilterConfig filterConfig) throws ServletException {System.out.println("初始化文件");}
// chain:链
/*
*
* 1、过滤器中的所有代码,再过滤特定请求的时候会执行
* 2、必须要让过滤器继续执行下去*/public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");System.out.println("CharacterFilter执行前");chain.doFilter(request,response); //让请求继续走下去,如果不写,,程序到这里就被拦截了System.out.println("CharacterFilter执行后");}
//    销毁  :web服务器关闭的时候过滤器销毁public void destroy() {System.out.println("文件被销毁了");}
}
   3、在xml中配置Filter
 <filter><filter-name>CharterFilter</filter-name><filter-class>com.bing.pojo.bing.pojo.filter.CharterFilter</filter-class></filter><filter-mapping><filter-name>CharterFilter</filter-name>
<!--        只要是servlet下的任何请求,都会经过这个过滤器--><url-pattern>/servlet/*</url-pattern></filter-mapping>

测试过滤器的servlet

public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//        resp.setCharacterEncoding("utf-8");resp.getWriter().write("你好呀!世界");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

12、监听器

实现一个监听器接口(有n种)
编写一个监听器
1、实现监听器接口

//统计网站在线人数,统计session
public class ListenDemo01 implements HttpSessionListener {//    创建session监听,查看你的一举一动
//    一旦创建session,会自动执行下面的代码public void sessionCreated(HttpSessionEvent se) {ServletContext sev = se.getSession().getServletContext();Integer username = (Integer) sev.getAttribute("username");if (username==null){username= new Integer(1);}else {int count = username.intValue();username = new Integer(count+1);}sev.setAttribute("username",username);}
//一旦session销毁就会触发这个时间public void sessionDestroyed(HttpSessionEvent se) {ServletContext sev = se.getSession().getServletContext();Integer username = (Integer) sev.getAttribute("username");if (username==null){username= new Integer(0);}else {int count = username.intValue();username = new Integer(count-1);}sev.setAttribute("username",username);}/*自动销毁:se.getSession().invalidate();//手动销毁:** */
}

手动销毁:se.getSession().invalidate()
2、配置xml中监听器

  <listener><listener-class>com.bing.pojo.bing.pojo.Listen.ListenDemo01</listener-class></listener>

自动销毁:

<session-config><session-timeout>1</session-timeout></session-config>

3、看情况是否使用

过滤器、监听器常用

监听器:GUI编程中经常使用

public class GUIDemo1 {public static void main(String[] args) {JFrame jFrame = new JFrame("监听");Panel panel = new Panel(null);jFrame.setBounds(300,300,500,500);jFrame.setBackground(new Color(53, 220, 64));jFrame.setLayout(null);panel.setBounds(30,30,300,300);panel.setBackground(new Color(19, 0, 121));jFrame.add(panel);jFrame.setVisible(true);jFrame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);}});}
}

用户登入后才能进入主页,用户注销后就进入登入页面。

  1. 用户登入之后向session中放入用户的数据
  2. 进入主页的时候要判断用户是否登入:用Filter实现。

Login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<h1>登入页面</h1><head><title>Title</title>
</head>
<body>
<form action="/servlet/login" method="get"><input type="text" name="username"><input type="submit" value="登入">
</form>
</body>
</html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><h1>登入成功,执行下面操作</h1>
<a href="/servlet/logout">注销</a>
</body>
</html>

error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>登入失败</h1>
<h2>你没有访问的权限</h2>
<img src="../img/500.jpg" alt="500没找到">
<a href="/servlet/logout">重新登入</a>
</body>
</html>

LoginDemo

public class LoginDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");if(username.equals("admin")){req.getSession().setAttribute("USER_NAME",req.getSession().getId());resp.sendRedirect("/sys/success.jsp");}else {resp.sendRedirect("/Error/error.jsp");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

LogoutServlet

public class LogoutServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Object user_name = req.getSession().getAttribute("USER_NAME");if(user_name!=null){req.getSession().removeAttribute("USER_NAME");resp.sendRedirect("/Login.jsp");}else {resp.sendRedirect("/Login.jsp");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

FilterLogin

public class FilterLogin implements Filter {public void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse) response;if(req.getSession().getAttribute("USER_NAME") == null){resp.sendRedirect("/Login.jsp");}chain.doFilter(request,response);}public void destroy() {}
}
    <filter><filter-name>FilterLogin</filter-name><filter-class>com.bing.pojo.bing.pojo.login.FilterLogin</filter-class></filter><filter-mapping><filter-name>FilterLogin</filter-name><url-pattern>/sys/*</url-pattern></filter-mapping>

javaweb学习笔记(六)相关推荐

  1. B站狂神说JavaWeb学习笔记

    JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...

  2. JavaWeb学习笔记(5)-B站尚硅谷

    文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...

  3. JavaWeb学习笔记(十)--HttpServletRequest

    1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...

  4. Ethernet/IP 学习笔记六

    Ethernet/IP 学习笔记六 EtherNet/IP defines two primary types of communications: explicit and implicit (Ta ...

  5. JavaWeb学习笔记-目录(待完成)

    JavaWeb学习笔记-目录(待完成) 01-基础加强(注解+反射) 02-mysql基础 03-mysql约束 04-mysql多表事务 05-jdbc 06-jdbc连接池JDBCTemplate ...

  6. 吴恩达《机器学习》学习笔记六——过拟合与正则化

    吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...

  7. ROS学习笔记六:理解ROS服务和参数

    ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...

  8. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  9. JS学习笔记六:js中的DOM操作

    1. JS学习笔记六:js中的DOM操作 文章目录 1. JS学习笔记六:js中的DOM操作 1.1. 获取Dom节点 1.2. 元素属性的操作方式 1.3. DOM节点的创建.插入和删除 1.4. ...

  10. JavaWeb学习笔记2 —— Web服务器简介

    JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...

最新文章

  1. 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
  2. Web 文件管理器elFinder 的漏洞链分析
  3. 关于错误提示:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决方案...
  4. 非线性薛定谔方程_五分钟彻底搞懂“薛定谔方程”,看后绝对不在迷惑了
  5. 为什么持续集成和部署在开发中非常重要?
  6. nginx源码分析:打开监听套接字的流程
  7. objective 修改plist文件
  8. Compilation failed: internal java compiler error
  9. 常用的4种黑盒测试方法
  10. linux基础学习思维导图及文档(17万字)
  11. 季节怎么形容_描写四季冬的词语 形容冬天季节的词语
  12. mysql 错误问题_Mysql常见的几个错误问题及解决方法
  13. Win7电脑如何关闭智能卡服务功能--win10专业版
  14. 树莓派+opencv+百度aip实现人脸识别并发置邮箱
  15. 【SSDT】SSDT hook技术
  16. 小米手机刷机-线刷-以K30Pro为例
  17. Visual Studio+opencv报错合集
  18. 谁知道下面这个视频中的特效是用什么软件做的?
  19. Win10安装Ubuntu18.04
  20. 客户要求降价,我如何通过涨价拿下订单

热门文章

  1. 乔安智联未能找到使用指定服务器,智联物联路由器设置和指定服务器通信
  2. 微软 奥尔良 游戏服务器,去了新奥尔良,才知道是一个城市,别只知道奥尔良烤翅...
  3. Python爬虫系列(2)
  4. C++ 使窗口最大化最小化
  5. Ubuntu命令笔记
  6. LightGBM算法详解(教你一文掌握LightGBM所有知识点)
  7. CSS Grid 网格布局完整教程
  8. 神舟不愿“当枪”的声明背后,“黑公关”问题引人深思
  9. 基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟
  10. 计算机视觉技术应用于农业自动化,计算机视觉技术及其在自动化中的应用