文章目录
Web项目开发模式
Model1
JSP+JavaBean模式
JSP负责渲染数据和处理页面。
JavaBean是一个满足以下条件的类
- 被public修饰
- 其中的属性进行封装
- 用private修饰属性
- 提供get/set方法
- 有无参数的构造方法
这种模式,不适合复杂项目的开发。
jsp既要显示内容,又要处理数据,后期维护扩展不方便。
Model2
MVC模式。
M:Model模型
V:View视图
C:Controller控制器
模型-视图-控制器模式。
这种模式适合复杂项目的开发。
每个模块之间互不干涉、各司其职,耦合性低,更方便后期维护和扩展
WEB阶段核心内容
B/S模式的访问流程
用户通过浏览器发送请求,访问服务器上的某个部署的项目,经过该项目的MVC,得到响应。
框架部分会使用SpringMVC实现MVC部分的流程。
页面提交数据的方式
-
通过表单提交 action method name submit
-
通过超链接提交 ,属于get方式 href =“地址?参数=值&参数=值”
-
使用ajax提交
先导入jquery
$.ajax({ url:'', data:{ "参数名":值, "参数名":值 }, type:"get/post", success:function(res){ //res为控制层的返回值 }, error:function(){} });
路径
${pageContext.request.contextPath}获取当前项目路径(在jsp中的标签里可使用)
./xxx
xxx在当前网页的最后一层
servlet依赖
如果要使用servlet、filter、listener、request、response都需要该依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
web.xml中的相关配置
-
servlet
<servlet> <servlet-name>自定义servlet名</servlet-name> <servlet-class>servlet全限定名</servlet-class> <!--servlet初始化参数--> <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>自定义</servlet-name> <url-patten>/映射名</url-patten> </servlet-mapping>
-
filter
<filterr> <filter-name>自定义filter名</filter-name> <filter-class>filter全限定名</filter-class> </filter> <filter-mapping> <filter-name>自定义</filter-name> <!--过滤器通常用于解决中文代码,一般过滤所有页面--> <url-patten>/*</url-patten> </filter-mapping>
-
listener
<!--配置监听器--> <listener> <listener-class>com.hqyj.bookShop.listener.MyListener</listener-class> </listener>
-
session
<!--设置全局session配置--> <session-config> <!--session有效时长,单位为分钟--> <session-timeout>15</session-timeout> </session-config>
-
全局参数
<context-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </context-param>
数据访问层(Dao)
现在使用JDBC实现查询,框架部分会使用MyBatis或MyBatisPlus或JPA,简化该层的写法.
由控制层保存数据到作用域中,跳转到jsp中展示数据。
跳转
请求转发forward
保存在request中的数据会之一存在
request.getRequestDispatcher(“目的路径”).forwaed(request,response);
重定向redirect
保存在request中的数据会丢失(不是用一个请求)
response.sendRedirect(“目的路径”)
JSP
作用域对象
request pageContext session application
内置对象
request response page pageContext session application out config exception
EL
表达式语言。替换jsp中的输出<%=%>部分。
-
从作用域中获取对象,通过.或[]获取属性,该属性必须存在且有get方法
对象名 . 属性名 或 {对象名.属性名}或 对象名.属性名或{指定作用域.对象名[“属性名”]}
-
从请求中获取参数,表单的name或?后的数据
#{param.参数名}
-
逻辑判断、计算
- 非空判断 ${empty 对象}
- 计算${xx+yy}
-
获取当前上下文路径
${pageContext.request.contextPath}
JSTL
<!--jstl标签库-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
先导入依赖,在jsp页面中引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
判断
<c:if test="条件"> html内容 </c:if>
-
遍历
<c:forEach items="要遍历的集合" var="遍历出的对象"> html内容 </c:forEach>
Session
通常用Session保存登录时的用户信息,实现在各个页面中共享信息或防止未登录的情况下访问。
使用session时,会创建一个JSESSIONID,保存在cookie中,在浏览器开启状态下,该JSESSIONID默认有30分钟的有效期,如果在30分钟内没有对session进行操作或关闭浏览器,该cookie就会销毁。
作者的话:
理论上,学好JavaWeb后就可以进行一些简单开发了,因为他串联了前面所学的前端基础和后端基础,并且前后端可以进行数据的传递。但想要开发效率更高,则还需要掌握一些框架,好的框架可以简化开发步骤:例如好用的前端框架可以省去你写页面样式的时间,好看用起来又方便,例如BootStrap、LayUI等;又比如后端用SpringMVC+MyBatis等框架可以省去写一些重复代码、提供常用SQL查询方法等等。学无止境,前路不孤。努力!