JavaBean
实体类JavaBean有特定的写法:
1).必须要有一个无参构造
2).属性必须私有化
3).必须有对应的get/set方法
一般用来和数据库的字段做映射 ORM
ORM :对象关系映射
1).表—>类
2).字段–>属性
3).行记录---->对象
Student的实体类JavaBean:
public class Student {
private String name;
private int age;
private String sex;
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public Student() {
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
MVC三重架构
什么是MVC: M -->Model 模型 ; V --> view 视图 ; C --> Controller 控制器
早些年的MVC
用户直接访问控制层,控制层就可以直接操作数据库;
servlet--CRUD-->数据库
弊端:程序十分臃肿,不利于维护
servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
架构:没有什么是加一层解决不了的!
程序猿调用
|
JDBC
|
Mysql Oracle SqlServer ....
目前的MVC三重架构
Model:
1.业务处理 :业务逻辑(Service)
2.数据持久层:CRUD (Dao)
View:
1.展示数据
2.提供链接发起Servlet请求 (a,form,img…)
Controller (Servlet):
1.接收用户的请求 :(req:请求参数、Session信息….)
2.交给业务层处理对应的代码
3.控制视图的跳转
Filter
Filter:过滤器 ,用来过滤网站的数据;
1.可以处理中文乱码
2.可以登录验证
Filter开发步骤:
1.导包
2.编写过滤器,实现Filter接口,重写对应的方法即可
import javax.servlet.*;
import java.io.IOException;
public class FilterDemo implements Filter {
//初始化:web服务器启动,就以及初始化了,随时等待过滤对象出现!
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//处理中文乱码问题
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
//设置文本类型为HTML类型
servletResponse.setContentType("text/html;charset=utf-8");
//让我们的请求继续走,如果不写,程序到这里就被拦截停止!
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
3.在web.xml中配置 Filter
<filter>
<filter-name>Myfilter</filter-name>
<filter-class>FilterDemo</filter-class>
</filter>
<filter-mapping>
<filter-name>Myfilter</filter-name>
<!--只要是 /myTest下的任何请求,会经过这个过滤器-->
<url-pattern>/myTest/*</url-pattern>
</filter-mapping>
监听器
实现一个监听器的接口;(有N种)
1.编写一个监听器,实现监听器的接口…
//统计网站在线人数 : 统计session
public class OnlineCountListener implements HttpSessionListener {
//创建session监听: 看你的一举一动
//一旦创建Session就会触发一次这个事件!
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
System.out.println(se.getSession().getId());
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(1);
}else {
int count = onlineCount.intValue();
onlineCount = new Integer(count+1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
//销毁session监听
//一旦销毁Session就会触发一次这个事件!
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(0);
}else {
int count = onlineCount.intValue();
onlineCount = new Integer(count-1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
}
2.web.xml中注册监听器
<!--注册监听器-->
<listener>
<listener-class>com.kuang.listener.OnlineCountListener</listener-class>
</listener>
过滤器、监听器常见应用
监听器:GUI编程中经常使用;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame("中秋节快乐"); //新建一个窗体
Panel panel = new Panel(null); //面板
frame.setLayout(null); //设置窗体的布局
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(0,0,255)); //设置背景颜色
panel.setBounds(50,50,300,300);
panel.setBackground(new Color(0,255,0)); //设置背景颜色
frame.add(panel);
frame.setVisible(true);
//监听事件,监听关闭事件
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
}
});
}
}
用户登录之后才能进入主页!用户注销后就不能进入主页了!
1.用户登录之后,向Sesison中放入用户的数据
2.进入主页的时候要判断用户是否已经登录;要求:在过滤器中实现!
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
if (request.getSession().getAttribute(Constant.USER_SESSION)==null){
response.sendRedirect("/error.jsp");
}
chain.doFilter(request,response);