文章目录
- JavaBean
- MVC三层架构
- Filter过滤器
- Listener监听器
- JDBC
- 文件上传Servlet
- 邮件发送Servlet
JavaBean
实体类
JavaBean有特定的写法:
- 必须要有一个无参构造;
- 属性必须私有化;
- 必须有对应的get/set方法;
一般用来和数据库的字段做映射 ORM
ORM :对象关系映射
表—>类
字段—>属性
行记录—>对象
1.建POJO实体类(一般与数据库中的表结构一一对应),略
2.JSP页面
<jsp:useBean id="people" class="com.cheng.pojo.People" scope="page"/>
<%--等价于People people = new People();--%>
<jsp:setProperty name="people" property="id" value="1"/>
<jsp:setProperty name="people" property="name" value="小明"/>
<jsp:setProperty name="people" property="age" value="12"/>
<jsp:setProperty name="people" property="address" value="广州"/>
<%--等价于people.setId("1");等--%>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"/>
<%--等价于people.getId();等--%>
MVC三层架构
什么是MVC: Model View Controller 模型、视图、控制器
Model
- 业务处理 :业务逻辑(Service)
- 数据持久层:CRUD (Dao - 数据持久化对象)
View
- 展示数据
- 提供链接发起Servlet请求 (a,form,img…)
Controller (Servlet)
-
接收用户的请求 :(req:请求参数、Session信息….)
-
交给业务层处理对应的代码
-
控制视图的跳转
Filter过滤器
比如 Shiro安全框架技术就是用Filter来实现的
Filter:过滤器 ,用来过滤网站的数据;
- 处理中文乱码
- 登录验证….
Filter开发步骤:
1.导包
注意导入的是javax.servlet下的Filter
2.实现Filter接口,重写对应的三个方法
public class CharacterEncodingFilter implements Filter {//初始化:web服务器启动,就已经初始化了,随时等待过滤对象出现!public void init(FilterConfig filterConfig) throws ServletException {System.out.println("CharacterEncodingFilter初始化");}//Chain : 链/*1. 过滤器中的所有代码,在过滤特定请求的时候都会执行2. 必须要让过滤器继续同行即固定有这行代码chain.doFilter(request,response);*/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执行后....");}//销毁:web服务器关闭的时候,过滤器会销毁public void destroy() {System.out.println("CharacterEncodingFilter销毁");}
}
3.在web.xml中配置 Filter
<filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.cheng.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!--只要是 /servlet的任何请求,会经过这个过滤器--><url-pattern>/servlet/*</url-pattern><!--<url-pattern>/*</url-pattern>--><!-- 别偷懒写个 /* --></filter-mapping><servlet><servlet-name>ShowServlet</servlet-name><servlet-class>com.cheng.servlet.ShowServlet</servlet-class></servlet><servlet-mapping><servlet-name>ShowServlet</servlet-name><url-pattern>/servlet/show</url-pattern></servlet-mapping><servlet><servlet-name>Servlet</servlet-name><servlet-class>com.cheng.servlet.ShowServlet</servlet-class></servlet><servlet-mapping><servlet-name>Servlet</servlet-name><url-pattern>/show</url-pattern></servlet-mapping>
输入http://localhost:8080/show得到乱码
输入http://localhost:8080/servlet/show得到
你好呀世界
Listener监听器
1.实现一个监听器的接口(有很多种监听器)
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;//统计网站在线人数 : 统计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);}/*Session销毁:1. 手动销毁 getSession().invalidate();2. 自动销毁*/
}
2.web.xml中注册监听器
<!--注册监听器--><listener><listener-class>com.cheng.listener.OnlineCountListener</listener-class></listener>
3.JSP
<h2>当前有<%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人在线</h2>
JDBC
(参考MySQL笔记3——JDBC)