javaweb学习笔记(六)
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、实现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);}});}
}
用户登入后才能进入主页,用户注销后就进入登入页面。
- 用户登入之后向session中放入用户的数据
- 进入主页的时候要判断用户是否登入:用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学习笔记(六)相关推荐
- B站狂神说JavaWeb学习笔记
JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...
- JavaWeb学习笔记(5)-B站尚硅谷
文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...
- JavaWeb学习笔记(十)--HttpServletRequest
1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...
- Ethernet/IP 学习笔记六
Ethernet/IP 学习笔记六 EtherNet/IP defines two primary types of communications: explicit and implicit (Ta ...
- JavaWeb学习笔记-目录(待完成)
JavaWeb学习笔记-目录(待完成) 01-基础加强(注解+反射) 02-mysql基础 03-mysql约束 04-mysql多表事务 05-jdbc 06-jdbc连接池JDBCTemplate ...
- 吴恩达《机器学习》学习笔记六——过拟合与正则化
吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...
- ROS学习笔记六:理解ROS服务和参数
ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...
- opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- JS学习笔记六:js中的DOM操作
1. JS学习笔记六:js中的DOM操作 文章目录 1. JS学习笔记六:js中的DOM操作 1.1. 获取Dom节点 1.2. 元素属性的操作方式 1.3. DOM节点的创建.插入和删除 1.4. ...
- JavaWeb学习笔记2 —— Web服务器简介
JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...
最新文章
- 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
- Web 文件管理器elFinder 的漏洞链分析
- 关于错误提示:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决方案...
- 非线性薛定谔方程_五分钟彻底搞懂“薛定谔方程”,看后绝对不在迷惑了
- 为什么持续集成和部署在开发中非常重要?
- nginx源码分析:打开监听套接字的流程
- objective 修改plist文件
- Compilation failed: internal java compiler error
- 常用的4种黑盒测试方法
- linux基础学习思维导图及文档(17万字)
- 季节怎么形容_描写四季冬的词语 形容冬天季节的词语
- mysql 错误问题_Mysql常见的几个错误问题及解决方法
- Win7电脑如何关闭智能卡服务功能--win10专业版
- 树莓派+opencv+百度aip实现人脸识别并发置邮箱
- 【SSDT】SSDT hook技术
- 小米手机刷机-线刷-以K30Pro为例
- Visual Studio+opencv报错合集
- 谁知道下面这个视频中的特效是用什么软件做的?
- Win10安装Ubuntu18.04
- 客户要求降价,我如何通过涨价拿下订单
热门文章
- 乔安智联未能找到使用指定服务器,智联物联路由器设置和指定服务器通信
- 微软 奥尔良 游戏服务器,去了新奥尔良,才知道是一个城市,别只知道奥尔良烤翅...
- Python爬虫系列(2)
- C++ 使窗口最大化最小化
- Ubuntu命令笔记
- LightGBM算法详解(教你一文掌握LightGBM所有知识点)
- CSS Grid 网格布局完整教程
- 神舟不愿“当枪”的声明背后,“黑公关”问题引人深思
- 基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟
- 计算机视觉技术应用于农业自动化,计算机视觉技术及其在自动化中的应用