一. MVC
- 模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
- 视图(View) - 界面设计人员进行图形界面设计。
- 控制器(Controller)- 负责转发请求,对请求进行处理。
- servlet
- 接收用户请求
- 视图跳转
- JSP
- 显示数据
- 提供用户操作
二. Filter(过滤器
过滤器
- 处理垃圾请求
- 解决乱码问题
1. filter代码
测试解决乱码问题
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("filter初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
System.out.println("执行前");
chain.doFilter(request,response);
System.out.println("执行后");
}
@Override
public void destroy() {
System.out.println("filter销毁");
}
}
2. Servlet代码
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("你好");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
3. web.xml
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>com.yorha.servlet.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet01</servlet-name>
<servlet-class>com.yorha.servlet.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet01</servlet-name>
<url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
<filter>
<filter-name>filter</filter-name>
<filter-class>com.yorha.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/servlet/show</url-pattern>
</filter-mapping>
4. 运行
未经过filter前
输出
调用filter
5. 关闭服务器
三. 监听器
listener读取Session消息
读取当前项目访问人数,局限:未添加手动销毁
1. listener代码
public class Listener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if (onlineCount == null){
onlineCount = 1;
}else {
int count = onlineCount;
onlineCount = count+1;
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if (onlineCount == null){
onlineCount = 0;
}else {
int count = onlineCount;
onlineCount = count-1;
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
}
2. jsp代码
<h3><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%></h3>
3. web.xml
<listener>
<listener-class>com.yorha.listener.Listener</listener-class>
</listener>
4. 运行
初始有三个session,一个可能是浏览器打开时自带,然后一个是此项目
此时清空session
刷新当前页面
OnlineCount的值就变为了四个
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性