JavaBean
就相当于一个实体类
JavaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法;
一般用来和数据库的字段做映射即ORM;
ORM:对象关系映射
- 表-->类
- 字段-->属性
- 行记录-->对象
示例
创建一个people表:
id | name | age | address |
---|---|---|---|
1 | 张三 | 5 | 北京 |
2 | 李四 | 15 | 上海 |
3 | 王五 | 25 | 浙江 |
Java代码
class People{
private int id;
private String name;
private int age;
private String address;
}
class A{
new People(1,"张三",5, "北京");
new People(2,"李四",15, "上海");
new People(3,"王五",25,"浙江");
}
MVC三层架构
MVC:Model view Controller模型、视图、控制器;
之前的三层架构
用户直接访问控制层,控制层就可以直接操作数据库;
servlet--CRUD-->数据库
弊端:程序十分臃肿,不利于维护
servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
架构:没有什么是加一层解决不了的!
程序猿调用
|
JDBC
|
Mysql Oracle SqlServer ....
现在的三层架构
Model
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View
- 展示数据
- 提供链接发起Servlet请求(a,form,img)
Controller(Servlet)
- 接受用户的请求:(req:请求参数、Session信息)
- 交给业务层处理对应的代码
- 控制试图的跳转
登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确:事务)--->Dao层查询用户名和密码是否正确-->数据库
Filter
Filter:过滤器,用来过滤网站的数据;
- 处理中文乱码
- 登录验证
Filer开发步骤:(以处理乱码问题示例)
1、导包
2、编写过滤器
- 导包不要错
- 实现Filter接口后重写对应的方法
package com.star.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
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);
}
}
package com.star.filter;
import javax.servlet.*;
import java.io.IOException;
public class CharacterEncodingFilter implements Filter {
//初始化
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
//chain:链
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("CharacterEncodingFilter执行前...");
chain.doFilter(request,response);//让我们的请求继续走,如果不写,程序到这里就被拦截停止了
System.out.println("CharacterEncodingFilter执行后...");
}
//销毁
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
}
web.xml中的配置
<servlet>
<servlet-name>ShowServlet</servlet-name>
<servlet-class>com.star.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>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.star.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--只要是/servlet的任何请求,会经过这个过滤器-->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
测试访问结果: