javaEE学习笔记

  1. http协议:
    超文本传输协议 规范服务器和客户端数据的交互方式。
    特点:无连接 无状态 简单快捷灵活
    2.http协议详解:
    请求格式:
    请求行:请求方法 请求地址 http协议版本
    请求头:消息报头 一般是客户请求的附加信息
    空行:
    请求数据:非必需
    3.请求方式:get post
    get:请求数据以问号的形式存放在请求行中 拼接再URL中。只能请求少量的数据 不安全
    post:请求数据存放在特定的位置 适合量大的数据 安全
    4.响应方式:
    响应行:HTTP版本 状态码 状态消息
    响应头:消息报头 客户端使用的附加信息
    空行:必须的
    响应实体:正文 服务器返回的浏览器信息
    5.服务器:高性能 安全性 性能 方面有更高的要求
    tomcat:omcat 服务器是一个开源的轻量级Web应用服务器,相当于微软的IIS;
    在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
    6.IDEA创建web项目的步骤:
    1. 添加Tomcat服务器:【File】菜单项下点击【Settings】选项。在新窗口展开【Build, Execution, Deployment】中的【Application Servers】,
      然后点击下图的符号【+】添加【Tomcat Server】应用。接着点击下图的符号【①】选择Tomcat服务器的目录
    2. 创建Web工程 右键JavaWeb模块,选择【Add Framework Support】,然后勾选【Web Application】(Create web.xml是自动帮我们勾选的),
      此时JavaWeb目录下即有web项目。
      3 IDEA部署Web工程
      【Run】–>【Edit Configurations】,打开面板后,选择坐上叫的【+】符号选择Tomcat Server,并且点击【Local】
      我们先将Tomcat服务名字改一下,这里我改成JavaWeb,并且选择【Deployment】,然后选择【+】符号添加Artifact
    3. JDK包中没有javax.servlet包 File】–》【Project Structure】打开工程面板,选择我们要添加servlet的module
      添加library
      5.添加第三方jar包 第三方jar包一般放在模块的web目录下WEB-INF下的lib目录,
      因此我们先创建一个lib目录,然后直接拖进常用的数据库jar包,选中jar包,右键选择【Add as Library】。
      7.Servlet 生命周期:
      8.Request对象:
      获取请求头数据 :
      获取请求方式:getMethod()
      获取请求URL:getRequestURL();
      获取请求URI:getRequestURI();
      获取协议:getScheme()
      获取请求行数据:
      获取用户数据:
      getParamter(“”) 获取前台传递过来的字符串 返回字符串
      getParamterValues() 返回数组 用于复选框传值
      9.请求乱码问题:req.setCharacterEncoding(“UTF-8”);
      10.Responed对象:
      getWriter().write 会出现乱码 解决办法:
      //设置编码格式
      resp.setHeader(“content-type”,“text/html;charset=utf-8”);
      11.请求转发:
      //请求转发 可以让请求从服务器端跳转到客户端 或跳转到指定的servlet
      //服务端行为 地址栏不发生改变
      //从始至终只有一个请求
      //request数据共享
      req.getRequestDispatcher(“ser1”).forward(req,resp);
      请求转发后直接return, 再继续处理没意义 已经让别的servlet处理
      12.request 作用域:一次请求内的所有servlet。
      13.重新定向:请求转发时 每刷新一次都会有表单的提交 会出现业务的重复处理
      resp.sendRedirect(“LoginAfter”);
      使用时机:请求中有表单数据 请求被servlet接收后无法处理
      14.不同请求间的数据共享问题 Session 但是Session有依赖于Cookie
      Cookie:
      //创建Cookie对象
      Cookie c=new Cookie(“user”,isexist.getLoginname());
      //设置有效期
      c.setMaxAge(3243600);
      //设置有效路径
      c.setPath("/zjh/abc");
      //响应Cookie数据给客户端
      resp.addCookie©;
      临时存储 Cookie‘对象存储在浏览器的内存中 浏览器关闭即失效(不设置时间) 设置有效期后cookie存储在硬盘中
      定时存储:默认cookies信息存储后,在有效期内符合路径要求的所有请求都会附带该信息。除非设置有效路径
      作用域:Cookie通过设置指定作用域只能在指定作用域有效。
      Cookies的获取:
      Cookie[] user= req.getCookies();
      if (user != null) {
      for (Cookie c:user
      ) {
      String name=c.getName();
      String value=c.getValue();
      System.out.println(name+"="+value);
      }
      }

15.Session技术:存在服务器端的技术 由服务器进行创建 依赖于cookies技术(携带sessionID)
作用域:Session在整个网页都有效
HttpSession hs = req.getSession(); //创建、获取session对象 session失效,重新创建session对象
默认存储时效:30分钟 hs.setMaxInactiveInterval(3243600); 在指定的时间内session没有使用,如果使用了则重新计时。
设置强制失效:hs.invalidate();

16.ServletContext的使用:
解决了不同用户共享的数据 由服务器创建
一个项目只有一个对象 不管在项目的哪一个位置访问的都是同一个位置
生命周期:服务器开启到服务器关闭
获取web.xml中的全局配置数据
创建Servlet对象:
//方式一
ServletContext sc=req.getSession().getServletContext();
//方式二
//ServletContext sc1= this.getServletConfig().getServletContext();
//方式三
//ServletContext sc2= req.getSession().getServletContext();
sc.setAttribute(“str”,“我爱学Java”);
获取内容:
ServletContext sc=req.getSession().getServletContext();
sc.getAttribute(“str”); 无数据则返回null;

当关闭服务器时,你添加的全局配置信息会清零 解决办法:在关闭服务器时将数据写进文件中 开启时在写进servletContext中

17.SevletConfig对象:servlet的专属配置对象

18.JSP:
JSP的page指令:jsp文件转译成servlet的定义

声明Java语言的局部代码块:<%声明的Java代码%> 尽量不要写逻辑代码 逻辑处理尽量交给servlet。
声明Java语言的全局代码块:<%!全局代码块%>
声明Java语言的脚本段:<%=变量名或分号%>

JSP的静态引入和动态引入:
静态引入:<%@include file=“main.jsp”%>
动态引入:<jsp:include page=“main.jsp”></jsp:include> 相当于调用

JSP的forword转发标签:
<jsp:forward page=“main.jsp”>
<jsp:param name=“str” value=“aaa”/> 转发的数据
</jsp:forward> 相当于servlet的请求转发 一次请求 地址栏信息不变

JSP的九大内置对象:
pageContext:页面上下文对象 封存其他内置对象 封存了JSP的运行信息 每个JSP文件单独拥有一个pageContext对象
作用域:当前页面
request:
session:
application:相当于ServletContext对象
respond:
out:响应对象 JSP内部使用 带有缓冲区
page:当前JSP的对象 相当于Java中的this
exception:异常对象 存储了当前异常的信息
config:主要用来获取web.xml的配置信息

JSP的路径:用绝对路径 第一个/代表服务器的根目录 相当于localhost:8080

19.Ajax:
异步刷新技术 在当前页面响应不同的请求内容。
function getDate(){
//创建Ajax对象
var ajax;
if (window.XMLHttpRequest){//火狐
ajax=new XMLHttpRequest();
}else if (window.ActiveXObject){//ie
ajax=new ActiveXObject(“Msxml12.XMLHTTP”)
}
//复写onreadystatement函数
ajax.onreadystatechange=function (){
//判断Ajax状态码
if (ajax.readyState4){
//判断响应状态码
if (ajax.status
200){
//获取响应内容
var result=ajax.responseText;
//获取元素对象
var sv=document.getElementById(“showdiv”);
sv.innerHTML=result;
}else if (ajax.status404){
var sv=document.getElementById(“showdiv”);
sv.innerHTML=“请求页面不存在”;
}else if (ajax.status
500){
var sv=document.getElementById(“showdiv”);
sv.innerHTML=“服务器繁忙”;
}

            }
        }
        //get发送请求
        ajax.open("get","ajax?name=zjh&pwd=admin");
        ajax.send(null);
       //post方式
        ajax.open("post","ajax");
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        ajax.send("name=zjh&pwd=admin");

ajax的响应格式:resp.getwriter().write(new Gson().toJson(u)); 返回list集合
jsp文件中:eval(“var u=”+result); 将list转化为json格式 以后使用对象就用 u.属性名 就行。

20:EL表达式:解决流转到JSP文件的数据
传统的方式:欢迎欢迎<%=request.getParameter(“str”)%>
欢迎欢迎<%=request.getAttribute(“str”)%> 较为麻烦

EL获取作用域的数据:
request对象存储的请求数据: ${ param.键名 }; 返回值 ${ paramvalues.键名 }; 返回数组
通过setattribute存储的数据: ${键名.属性} 返回的是对象

${ 逻辑运算 }

21.JSTL:对EL表达式的一种拓展 用来提升在JSP页面的逻辑代码的编程效率
导入jar包 <%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

取值设值标签:
<c:out value=“哈哈哈哈”></c:out>
<c:set var=“hello” value=“page”></c:set>
<c:remove var=“hello”></c:remove>

逻辑标签: 依赖于EL标签 表达式中涉及到的数值必须在作用域中取
<c:if test="${1==5}">
Hello JSTL
</c:if>

多分枝语句判断:
<c:set var=“score” value=“85”></c:set>
<c:choose>
<c:when test=" s c o r e > 90 " > < b > 奖 励 吃 鸡 装 备 < / b > < / c : w h e n > < c : w h e n t e s t = " {score>90}"> <b>奖励吃鸡装备</b> </c:when> <c:when test=" score>90"><b></b></c:when><c:whentest="{score>80&&score<90}">
奖励LOL
</c:when>
<c:otherwise></c:otherwise>
</c:choose>

循环语句:
<c:forEach begin=“0” end=“4” step=“1” varStatus=“vs”>
${vs.index}

</c:forEach>

<c:forEach items="${list}" var="str">
    ${str}
</c:forEach>

22.格式化标签库:<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>

23:过滤器:对服务器资源进行管理
/**

  • 继承Filter接口
  • 复写方法
  • */

//放行资源
filterChain.doFilter(servletRequest,servletResponse);

非法访问拦截:
拦截的资源:拦截所有的资源
需要放行的资源:
1.指定页面放行:无需登录即可访问的页面 例如登录页面 注册页面
2.静态资源放行:img文件 js文件 css文件
3.指定操作放行:登录操作 注册操作
4.登录状态; 放行 判断session中用户信息是否为空

24.监听器:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值