华清远见-重庆中心-JavaWeb后端技术总结
JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb。
B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模式 用户只需要一个浏览器即可访问服务器 C/S:Clint/Server 客户端/服务器模式 用户需要下载客户端才能访问服务器
网站
用户通过浏览器访问某个域名或IP地址时,浏览到的综合性页面
实际就是发布在服务器上的一个应用程序,用户通过浏览器访问该程序。
网页
网站中的一个页面
静态页面:所有人看到的数据都一致
动态页面:不同的人看到的页面中的数据不一致
JavaWeb就是B/S模式下的软件开发,开发综合性的服务网站。
Tomcat
由Apache、Sun和其他公司及个人共同开发的web服务器。
免费、开源、轻量级,在中小型系统中普遍被使用。
是开发和调试Web项目的首选。
WEB阶段核心内容
B/S模式的访问流程
用户通过浏览器发送请求,访问服务器上的某个部署的项目,经过该项目的MVC,得到响应。
框架部分会使用SpringMVC替换现有的Servlet实现MVC的流程。
页面提交数据的方式
-
通过表单提交,可以设置get/post
<form action="地址" method="get/post"> <input type="text" name="参数" > <input type="submit"> </form>
-
通过超链接提交,属于get提交
<a href="地址?参数=值&参数=值">xxx</a>
-
通过ajax提交,可以设置get/post
先导入Jquery
$.ajax({ //请求地址 url:'', //提交数据 data:{ "参数名":值, "参数名":值 }, //提交方式 type:"get/post", //成功回调 success:function(res){ //res为控制层的返回值 }, //失败回调 error:function(){} });
路径
-
/
表示根目录,即域名:端口号,如localhost:8080
-
./
表示当前目录,如在localhost:8080/Web03/page.html页面中访问./index.html,相当于localhost:8080/Web03/index.html
-
…/
表示向上一层目录,如在localhost:8080/Web03/page.html页面中访问…/index.html,相当于localhost:8080/index.html
使用EL的${pageContext.request.contextPath}表示当前项目的上下文路径,
如localhost:8080/Web03/pages/index.html中使用${pageContext.request.contextPath}/hello.html,
相当于localhost:8080/Web03/hello.html
servlet依赖
如果要使用servlet、filter、listener、request、response都需要该依赖
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
web.xml中的相关配置
-
servlet
<!-- 声明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请求映射 --> <servlet-mapping> <servlet-name>自定义servlet名</servlet-name> <url-patten>/映射名</url-patten> </servlet-mapping>
-
filter
<!-- 声明filter --> <filter> <filter-name>自定义filter名</filter-name> <filter-class>filter全限定名</filter-class> </filter> <!-- 配置filter请求映射 --> <filter-mapping> <filter-name>自定义filter名</filter-name> <!--过滤器通常用于解决中文乱码,要过滤所有请求--> <url-patten>/*</url-patten> </filter-mapping>
-
listener
<listener> <listener-class>监听器的全限定名</listener-class> </listener>
-
session
<!--设置全局session配置--> <session-config> <session-timeout>session有效时长,单位为分钟</session-timeout> </session-config>
-
全局参数
<!--设置全局参数--> <context-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </context-param>
数据访问层(Dao)
现在使用JDBC实现查询,框架部分会使用MyBatis、MyBatisPlus或JPA,简化该层的写法。
跳转
请求转发forward
保存在request中的数据会一直存在
request.getRequestDispatcher("目的路径").forward(request,response);
重定向redirect
保存在request中的数据会丢失(不是同一个请求)
response.sendRedirect("目的路径");
JSP
由控制层保存数据到作用域中,跳转到Jsp中展示数据。
作用域对象
pageContext request 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:if>
Session
通常用session保存登录时的用户信息,实现在各个页面中共享信息或防止未登录的情况下访问。
使用session时,会创建一个JSESSIONID,保存在cookie中,在浏览器开启状态下,该JSESSIONID默认会有30分钟的有效期,
如果在30分钟内没有对session进行操作或关闭浏览器,该cookie就会销毁,对应的session就会失效。