JavaBean实体类详解
Posted 生命是有光的
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaBean实体类详解相关的知识,希望对你有一定的参考价值。
1、JavaBean
JavaBean就是实体类
JavaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法
JavaBean一般用来和数据库的字段做映射
- 数据库中的表对应java中的类
- 表中的字段对应java类中的属性
- 表中的行记录对应java创建的对象
例如:这是数据库的一张people表
id | name | age | address |
---|---|---|---|
1 | 秦疆1号 | 3 | 西安 |
2 | 秦疆2号 | 18 | 西安 |
3 | 秦疆3号 | 100 | 西安 |
class People{
private int id;
private String name;
private int id;
private String address;
}
class A{
new People(1,"秦疆1号",3,"西安");
new People(2,"秦疆2号",3,"西安");
new People(3,"秦疆3号",3,"西安");
}
1.1、实体类的包名
对于JavaBean实体类的包名,我们有以下建立的方式:
- com.XXX.pojo
- com.XXX.entity
- com.XXX.dto
- com.XXX.vo
1.2、实体类
JavaBean实体类一般用来和数据库的字段做映射,例如,我们创建一个People类
public class People {
private int id;
private int age;
private String address;
// 无参构造
public People() {
}
// 有参构造
public People(int id, int age, String address) {
this.id = id;
this.age = age;
this.address = address;
}
// get/set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
// 重写 toString 方法
@Override
public String toString() {
return "People{" +
"id=" + id +
", age=" + age +
", address='" + address + '\\'' +
'}';
}
}
-
如果我们只是单纯的创建一个类,那么这只能称之为一个People类,不能称为实体类。那如何才能称为实体类呢?
-
我们需要在数据库中建立对应的People表
-
实体类一般都是和数据库中的表结构一一对应
javabean.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// People people = new People();
// people.setId();
// people.setName();
// people.setAge();
// people.setAddress();
// people.getId();
// people.getName();
// people.getAge();
// people.getAddress();
%>
<jsp:useBean id="people" class="com.kuang.pojo.People" scope="page" />
<jsp:setProperty name="people" property="id" value="1" />
<jsp:setProperty name="people" property="name" value="李沁" />
<jsp:setProperty name="people" property="age" value="3" />
<jsp:setProperty name="people" property="address" value="西安" />
id<jsp:getProperty name="people" property="id"/>
姓名<jsp:getProperty name="people" property="name"/>
年龄<jsp:getProperty name="people" property="age"/>
地址<jsp:getProperty name="people" property="address"/>
</body>
</html>
这段代码的意思就是注释的代码的意思
jsp:userBean
相当于new People
jsp:setProperty
相当于people.setXXX
jsp:getProperty
相当于people.getXXX
2、MVC三层架构
-
什么是MVC?
Model、View、Controller
模型、视图、控制器
模型:JavaBean实体类和数据库表中对应的字段
视图:jsp页面
控制器:servlet,负责跳转页面
Model:
- 业务处理:完成具体的业务操作(Service)
- 数据持久层:数据库的增删改查(Dao)
View:
- 展示页面
- 提供链接发起Servlet请求
Controller:(Servlet)
-
接受用户的请求 ,拿到用户的请求参数
-
交给业务层处理对应的代码
-
控制视图的跳转
登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确)--->Dao层查询用户名和密码是否正确-->数据库
3、过滤器Filter
Filter:过滤器 ,当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能,常见的应用场景有:
-
登录验证
-
统一编码处理
-
敏感字符过滤
3.1、步骤
- 导包
- javax.servlet.jsp-api
- servlet-api
- jstl-api
- standard
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
-
定义一个类,实现接口
Filter
-
复写方法
-
在web.xml中配置拦截路径
3.2、Demo
编写一个字符编码过滤器,我们想要通过过滤器来解决中文乱码问题
ShowServlet.java
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 这里没有配置编码,打印在网站上会乱码
resp.getWriter().write("你好,世界!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- 在web.xml中注册servlet映射
<servlet>
<servlet-name>ShowServlet</servlet-name>
<servlet-class>com.kuang.servlet.ShowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
- 一个Servlet可以指定多个映射路径
开始编写字符编码过滤器
- 定义一个类,实现接口
Filter
,复写方法
CharacterEncodingFilter.java
// 字符编码过滤器
public class CharacterEncodingFilter implements Filter {
// 初始化:web服务器启动,就已经初始化了,随时等待过滤对象出现!
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化!");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// Chain:链
// 1.过滤器中的所有代码,在过滤特定请求的时候都会执行
// 2.必须要让所有过滤器继续同行 filterChain.doFilter(servletRequest,servletResponse)
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
System.out.println("CharacterEncodingFilter执行前");
filterChain.doFilter(servletRequest,servletResponse); // 让我们的请求继续走,如果不写,程序到这里就被拦截了
System.out.println("CharacterEncodingFilter执行后");
}
// 销毁
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
}
- 在web.xml中配置拦截路径
- 只要是/servlet下面的任何请求,都会经过这个过滤器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 只要是/servlet下面的任何请求,都会经过这个过滤器 -->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
- 测试访问
3.3、过滤器生命周期方法
init
:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源doFilter
:每一次请求被拦截资源时,会执行。执行多次destroy
:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
3.4、过滤器配置详解
拦截路径配置:
- 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行
- 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行
- 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
- 拦截所有资源:/* 访问所有资源时,过滤器都会被执行
4、监听器Listener
然后调用init方法。只执行一次。用于加载资源
doFilter
:每一次请求被拦截资源时,会执行。执行多次destroy
:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
3.4、过滤器配置详解
拦截路径配置:
- 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行
- 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行
- 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
- 拦截所有资源:/* 访问所有资源时,过滤器都会被执行
以上是关于JavaBean实体类详解的主要内容,如果未能解决你的问题,请参考以下文章