MVC开发模式和命名规范
MVC开发模式MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
M:Model 模型,实体类和业务和 dao
V:view 视图,JSP
C:Controller 控制器,servlet
作用:视图和逻辑分离
MVC 适用场景:大型项目开发.
开发步骤
设计数据库
实体类
持久层(dao)
业务逻辑
控制器
**视图
命名规范1.项目名:没有要求,不起中文
2.包:公司域名倒写 com.bjsxt
3.数据访问层:dao,persist,mapper
4.实体:entity,model,bean,javabean,pojo
5.业务逻辑:service,biz
6.控制器:controller,servlet,action,web
7.过 ...
Servlet的过滤器和监听器
过滤器问题:Servlet 的作用是针对浏览器发起的请求,进行请求的 处理。通过 Servlet 技术我们可以灵活的进行请求的处理,但是我们不但要对请求记性处理,我们还需对服务器的资源进行统一的管理 ,比如请求编码格式的统一设置,资源的统一分配等等,这个时候该怎么办呢?
解决:使用过滤器。
作用:对服务器资源进行管理 保护 servlet
过滤器的使用
创建一个实现了Filter接口的普通java类
覆写接口的方法
init方法:服务器启动即执行。资源初始化
doFilter方法:拦截请求的方法,在此方法中可以对资源实现管理。
destory方法:服务器关闭执行。
注意:需要手动对请求进行放行。chain.doFilter(request, response);
在web.xml中配置过滤器
12345678<filter> <filter-name>myFilter</filter-name> <filter-class>com.bjsxt.filter.MyFilter</filter-class></fi ...
Jstl标签库
JSTL标签库什么是JSTL标签库 JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL), JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作 标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以 及指定标签库而已!
如果你使用MyEclipse开发JavaWeb,那么在把项目发布 到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的 Jar包!如果你没有使用MyEclipse开发那么需要自己来导入这个 JSTL的Jar包:jstl-1.2.jar。
JSTL标签库的作用 用来提升在JSP页面的逻辑代码的编码效率,使用标签来替换逻辑代码的直接书写,高效,美观,整洁,易读
Jstl标签库的使用
核心标签库
1.导入jar包
2.声明jstl标签库的引入(核心标签库)
<%@taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>
基本标签:
<-c:out value=”数据” default=”默认值”>< ...
El表达式
El表达式
传统方式获取作用域数据
缺点一:导入包
缺点二:需要强转
缺点三:获取数据的代码过于麻烦。
什么是EL表达式 全称:Expression Language,一种写法非常简介的表达式。语法 简单易懂,便于使用。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言
EL表达式的作用 让jsp书写起来更加的方便。简化在jsp中获取作用域或者请 求数据的写法。也会搭配Jstl来进行使用。
El表达式的使用
语法结构:${expression},提供.和[ ]两种运算符来存取数据。
使用EL表达式获取请求数据
请求头数据:
${header}–>返回所有的请求头数据
${header[“键名”]}—>返回指定的键名的请求头数据
${hedaerValues[“键名”]}—>返回指定的键名(同键不同值)的值的数组。
获取用户请求数据
获取请求数据
request对象存储了请求数据—>${param.键名} 返回值
request对象存储了请求数据—>${paramvalues.键名} 返回的是数 ...
Ajax学习
Ajax概念问题:目前来,所有的请求的发送都是通过浏览器自己直接进行发送,响应是浏览器在接收到响应信息后自主的将响应数据覆盖当前页面显示。现在,要求在保留原有页面内容的情况下显示新的响应内容.
解决:使用ajax技术
ajax原理:请求由ajax引擎对象发送,响应数据,浏览器不会直接进行处理,而是流转给发请求的ajax引擎对象。这样我们可以通过操作ajax引擎对象变相的实现在页面中显示新的响应资源。
本质:js的DOM操作中的数据由程序员自己写死声明,变成从服务器动态的获取。
Ajax使用
创建ajax引擎对象
覆写onreadystatechange函数
判断数据状态码(ajax.readyState)
判断响应状态码(ajax.status)
获取响应数据
处理响应数据(js的DOM操作)
创建并发送请求
ajax.open(method,url,async)
ajax.send(“请求数据”)
解释
method:表示请求的方式,值为get/post
url:表示请求地址,一般为要请求的servlet的别名。
async:表示异步还是同步请求, true表示异步, fals ...
JSP学习
JSP 学习问题:在学习了 Servlet 之后,使用 Servlet 进行页面的展现,代码书写过于麻烦。极大的影响了开发的效率,那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢?
解决:使用 JSP 技术
概念:JSP 全名为 JavaServerPages,中文名叫 java 服务器页面,其根本是一个简化的 Servlet 设计,它是由 SunMicrosystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。
特点
本质上还是 Servlet
跨平台,一次编写处处运行
组件跨平台
健壮性和安全性
Jsp 的访问原理: 浏览器发起请求,请求 JSP,请求被 Tomcat 服务器接收,执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件(也是Servlet),然后执行转义好的 java 文件。
Jsp的三种注释前端语言注释:会被转译,也会被发送,但是不会被浏览器执行
java语言注释:会被转译,但是不会被servlet执行
Jsp注释:不会被转译。
Jsp的page指令学习
<%@page 属性名=”属性值 ...
web.xml和Tomcat下的server.xml学习
Web.xml文件使用总结作用:存储项目相关的配置信息,保护 Servlet。解耦一些数据对程序的依赖。
使用位置:每个 Web 项目中
Tomcat 服务器中(在服务器目录 conf 目录中)
区别:
Web 项目下的 web.xml 文件为局部配置,针对本项目的位置。
Tomcat 下的 web.xml 文件为全局配置,配置公共信息。
如果单个servlet的web.xml没有配置相关信息,则按Tomcat下的web.xml使用
内容(核心组件):
全局上下文配置(全局配置参数)
Servlet 配置
过滤器配置
监听器配置
加载顺序:Web 容器会按 ServletContext -> context-param -> listener ->filter-> servlet 这个顺序加载组件,这些元素可配置在 web.xml文件中的任意位置。
加载时机:服务器启动时
server.xml 文件问题:浏览器发起请求后,服务器根据请求在 webapps 目下调用对应的 Servlet 进行请求处理。那么为什么是 webapps 目录难道不能是其他的 ...
Servlet基础-8
ServletContext 对象问题:Request 解决了一次请求内的数据共享问题,session 解决了用户不同请求的数据共享问题,那么不同的用户的数据共享该怎么办呢?
解决:使用 ServletContext 对象
作用:解决了不同用户的数据共享问题
原理:ServletContext 对象由服务器进行创建,一个项目只有一个对象。不管在项目的任意位置进行获取得到的都是同一个对象,那么不同用户发起的请求获取到的也就是同一个对象了,该对象由用户共同拥有。
特点
服务器进行创建
用户共享
一个项目只有一个
生命周期:服务器启动到服务器关闭
作用域:项目内
使用
获取ServletContext对象
第一种方式:ServletContext sc=this.getServletContext();
第二种方式:ServletContext sc2=this.getServletConfig().getServletContext();
第三种方式:ServletContext sc3=req.getSession().getServletContext();
使用Se ...
Servlet基础-7
Session学习问题:Request 对象解决了一次请求内的不同 Servlet 的数据共享问 题,那么一个用户的不同请求的处理需要使用相同的数据怎么办呢?
解决:使用 session 技术。
原理:用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的 Servlet 进行处理。在处理过程中会给用户创建 一个 session 对象,用来存储用户请求处理相关的公共数据,并将 此 session 对象的 JSESSIONID 以 Cookie 的形式存储在浏览器中 (临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请 求时,请求信息中会附带 JSESSIONID,服务器在接收到请求后, 调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID返回其对应的session 对象。
特点:
存储在服务器端
服务器进行创建
依赖Cookie技术
一次会话
默认存储时间是30分钟
作用:解决了一个用户不同请求处理的数据共享问题
使用:
创建session对象/获取session对象
HttpSession hs=req.getSession( ...
Servlet基础-6
Cookie学习问题:HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁。如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?
解决:使用Cookie技术,解决了发送的不同请求的数据共享问题
解释:Cookie 技术其实是浏览器端的数据存储技术,解决了不同请求需要使用相同的请求数据的问题。我们把请求需要共享的请求数据,存储在浏览器端,避免用户进行重复的书写请求数据。但是哪些数据需要使用 Cookie 技术存储起来是一个主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。
使用
Cookie 数据存储
创建Cookie对象 Cookie c=new Cookie(String name, String value);
设置Cookie(可选)
设置有效期 c.setMaxAge(int seconds)(参数以秒数为单位);设置存储时间,周期为时间设置,存储在用户电脑中。
设置有效路径 c.setPath(String uri)
不设置 cookie 信息的存储时间,周期为一次会话,即关闭浏览器后消 ...