javaWeb
基础概念
Tomcat 详解
安装 Tomcat
官网:https://tomcat.apache.org/
Tomcat 的配置
Tomcat ⇒ conf 文件夹 ⇒ server.xml 中
Idea中配置Tomcat
如果初始 Tomcat 的中文出现乱码的情况解决方案
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Http
什么是 Http ?
.
.HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。HTTP是互联网的基础协议,用于客户端与服务器之间的通信,它规定了客户端和服务器之间的通信格式,包括请求与响应的格式。HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输。
get:一般携带的请求比较少,大小有限制,会在浏览器的URL显示数据内容,不安全,但高效。
post:携带的参数没有限制,大小没有限制,不会显示内容在URL中,安全,但是高效。
Maven
Maven 环境的搭建
在java中,我们就会使用大量的jar包,需要我们手动的去进行导入。而maven便可以自动帮我们进行下载,并配置。(架构管理工具)
maven的核心思想:约定大于配置。
下载完成后,解压即可。
配置环境变量
百度即可。
配置阿里云镜像
百度一下,在 conf 下 setting 文件中,配置一下。
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<name>internal nexus repository</name>
<url>http://repo.maven.org/maven2/</url>
</mirror>
阿里云镜像如下:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>
https://maven.aliyun.com/repository/public
</url>
<mirrorOf>central</mirrorOf>
</mirror>
idea中配置 maven
以下功能英译汉,顾名思义。
servlet
servlet是sun公司开发出来的动态web的一门技术
sun公司在这些API提供的一个接口叫做 servlet ,如果想开发 servlet,则需要完成两个步骤
- 编写好一个类,实现 servlet 接口
- 将开发好的 java 类部署到web服务器中
依赖 :
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
编写servlet 的 映射
指定了固有的映射,优先级最高,如果找不到,就会走默认的途径。
ServletContext
web容器在启动的时候,它会为每一个web程序都创建一个对应的ServletContext对象,它代表了当前的应用
多多了解 Context 这个单词
response
response 下载文件(了解即可,可以百度一下源码多看看)
如果获取到客户端请求过来的参数,找:request
如果获取到客户端相应的一些信息,找:response
response 重定向(重点)
resp.sendRedirect("/xxx")
重定向和转发的区别:
.
相同点:页面都会实现跳转
不同点:
请求转发的时候,url 不会发生改变。
重定向的时候,url 会发生改变
request
代表客户端的一个请求,用户通过 Http协议 访问服务器,Http 请求的所有的信息,会被封装到 HttpServletRequest 的方法,获得客户端的所有信息。
示例代码:
req.getParameter()
、
req.getRequestDispatcher ( ' xxx.jsp ' ).forward( req,resp )
Cookie 与 Session
会话:用户打开了一个浏览器,点击了很多的链接,访问web资源,关闭浏览器,这个过程称之为会话。
cookie:会话技术(相应,请求)
session:服务技术,利用这个技术,可以保存用户的会话信息。
常见:我们第一次登录了,第二次可以利用cookie这个技术,直接登录。
Cookie[] cookie = req.getCookies()
Cookie.getName()
⇒ 获取 cookie 中的 key
Cookie.getValue()
⇒ 获取 cookie 中的 value
new Cookie()
⇒ 新建一个cookie
cookie.setMaxAge()
⇒ 设置 cookie 的有效期
resp.addCookie ()
⇒ 相应给客户端一个 cookie
一个 cookie 只能保存一个信息
cookie 只能限制 4kb
300 个cookie 是 web的上线
删除 cookie:
不设置有效期,关闭浏览器,自动删除。
设置有效期为 0
Session(重点)
什么是Session
- 服务器会给每一个用户(浏览器)创建一个Session对象;
- 一个Session独占一个浏览器,如果浏览器不关闭,这个Session就一直存在;
- 用户登录之后,所有的网站都可以访问它;
Session 和 Cookie 的区别
- Cookie 是吧重要的东西写给浏览器,保存在浏览器(可以保存多个)
- Session 把用户的数据写到用户独占的 Session 中,服务端保存(重要的信息,减少服务器资源的浪费)
- Session 对象由服务器创建
JSP
jsp: “java 服务端页面,也和Servlet一样,用于动态web技术。”
JSP 表达式
<%= java.util.Data() %>
⇒ 直接可以在jsp页面中写java中的代码
<% 代码片段 %>
⇒ 可以在jsp页面中直接写入代码。
<%-- 我是一个注释 --%>
⇒ jsp 的注释会被隐藏,是专门给开发者看。安全性高。
<%@ page errorPage = " xxx " %>
.
也可以在 web.xml 中进行配置。
.
<%jsp:include page=“/xxx/xxx.jsp”%>` ⇒ 页面的拼接
转发并且携带参数
内置对象以及作用域
设置作用域:
pageContext.setAttribute("name1","xx")
⇒ 保存的数据只在一个页面有效
request.setAttribute("name2","xx")
⇒ 保存的数据只在一次请求中有效
session.setAttribute("name3","xx")
⇒ 保存的数据只在一次会话中有效
application.setAttribute("name4","xx")
⇒ 保存的数据只在服务器中有效,从打开到关闭服务器
取出作用域中的值:
pageContext.getAttribute("name1","xx")
request.getAttribute("name2","xx")
session.getAttribute("name3","xx")
application.getAttribute("name4","xx")
pageContext.findAttribute("xxx")
⇒ 从底层到高层去寻找
EL表达式 :
${name1}
${name2}
${name3}
${name4}
页面跳转的两种方式:
pageContext.forword( " xx.jsp " ) ⇒ 页面转发,但是地址栏不变
request.getRequestDispatcher ( “xxx.jsp” ).forword ( request,response )
JSP标签、JSTL标签、EL表达式
jstl核心标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
c:if
<c:if test=${ param.userName == "xxx" } var="xxx"> ⇒ var 是 返回的结果值:True/False
<c:out value="xxx"/>
<c:if>
c:out
<c:out value = "xxx"/>
c:choose
<c:set var="scope" value=96 />
<c:choose>
<c:when test="$score=60">
你的成绩刚及格
</c:when>
<c:when test="$score<60">
你的成绩bu及格
</c:when>
<c:choose>
c:forEach:
<c:forEach var = "xxx" items=${list}>
xxx
</c:forEach>
JavaBean
JavaBean 有特定的写法:
- 必须有一个无参构造
- 属性必须私有化
- 必须有对应的 get/set 方法
.
一般用来和数据库的字段做 ORM;
ORM:对象关系映射
MVC三层架构
什么是MVC:Model、View、Controller 模型、视图、控制器
model:
- 业务处理(Service)
- 数据持久层(Dao)
View- 展示数据
- 提供链接发起的 Servlet 请求(a,img…)
Controller(Servlet)- 接受请求(Session信息、req:请求参数)
视图的转跳
Filter ⇒ 过滤器
示例:
Listener ⇒ 监听器(了解)
了解去百度一下即可,此处略,不是很重要。主要用在 GUI 页面使用。
JDBC(了解)
JDBC 事务
要么都成功,要么都失败!
测试注解 @Test ⇒ 推荐
需要测试的代码前面加上
@Test
,只在方法上有效
关于 idea 中 maven 不能接收编译 xml 文件 配置信息(此处了解,案例请参考 mybatis 笔记中 基础 的第一个案例来看)
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
完结撒花
完结撒花。大致是让大家了解一下原理。