JavaEE初学总结

一、Servlet

  1. servlet是JavaEE的重要组件之一
  2. 用于前台页面与后台的交互
  3. Servlet是一个java类,继承于HttpServlet
  4. Servlet要依托于tomcat运行

二.Tomcat目录

  1. bin:启动目录
  2. conf : 配置文件目录
  3. lib : jar目录
  4. logs : 日志目录
  5. temp : 临时文件目录
  6. webapps : 存放web项目
  7. work : 工作目录,存放jsp转servlet文件

三.论/的重要性

  1. web.xml里,url-pattern必须要加/
  2. 页面form的Action里面不要加/

四. Servlet返回中文

response.setCharacterEncoding("UTF-8");
		response.getWriter().write(" 
			"<html>\r\n" + 
			"<head>\r\n" + 
			"<meta charset=\"UTF-8\">\r\n" +  
			"</head>\r\n" + 
			"<body>\r\n" + 
			"Hello world!<hr>\r\n" +  "你好"+
			"</body>\r\n" + 
			"</html>");

五. Get与Post请求的区别

  1. form表单默认是get
  2. get提交会用?把参数拼接在url地址后面,参数与参数之间用&,不安全
  3. post提交数据,参数会单独放在请求体里,安全性高
  4. get请求的url有长度限制,post没有
  5. get请求只支持ASCII字符提交,post没有限制

六. 创建servlet

  1. 先创建一个class,继承于HttpServlet
    public class MyFirstServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse response) throws ServletException, IOException {
    System.out.println(“提交的方式:”+ arg0.getMethod());
    }
    }
  2. 在web.xml里,配置servlet

    myFirstServlet
    com.igeek.excellence.servlet.MyFirstServlet


    myFirstServlet
    /xx

七. Servlet从页面到后台的访问流程

  1. Form表单提交,通过action去web.xml里匹配相应的url-pattern
  2. 会得到servlet-name,通过servlet-name能获取到是哪个servlet,再通过全经名找到相应的servlet类
  3. 会执行到servlet类里的service()方法,可以通过request获取请求里的参数,通过respone返回内容到页面

八. Servlet生命周期

  1. Tomcat容器启动时,不会加载Servlet
  2. 当一个用户访问这个servlet,它会先实例化,再初始化,然后执行service
  3. 下一个用户,不会实例化和初始化该servlet,直接执行service
  4. 当容器关闭或该servlet改动时,会执行destroy

九. 去掉网页url里面的项目名

右击项目,选择properties

十. 通过注解创建servlet

  1. servlet3.0之后支持注解功能,省去了web.xml里的复杂配置
  2. servlet类上加上注解:
    @WebServlet(value="/ThreeServlet",name=“threeServlet”)
  3. name相当于web.xml里的servlet-name,value相当于web.xml里的url-pattern

十一. 转发与重定向的区别

	//重定向(客户级别)
	response.sendRedirect("html/registerSuccess.html");
	
	//转发(服务器级别)
	request.getRequestDispatcher("html/registerSuccess.html")
	.forward(request, response);
  1. 转发是由request调用的,重定向是由response调用的
  2. 转发网址是不会改变的,重定向网址会改变
  3. 转发只能访问项目内部网页,重定向可以访问第三方的网页
  4. 转发它会携带request作用域,可以携带参数
  5. 转发属于服务器级别,可以访问web-inf下的网页

十二. JS的页面跳转

  1. Js的跳转
    window.location.href=“login.html”;
  2. Jquery的跳转
    $(location).prop(“href”,“login.html”);

十三. 过滤器

  1. 是JavaEE的标准组件之一
  2. 是用来过滤发往servlet的请求
  3. 是一个实现了Filter接口的类

@WebFilter(value= {"/MyServlet","/TwoServlet"})
public class TwoFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//把ServletRequest转换成HttpServletRequest
HttpServletRequest re = (HttpServletRequest) request;
//可以通过转换后的request获取各类参数
chain.doFilter(request, response);
}
}

十四. 字符编码过滤器

  1. 在web.xml里添加

    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter

    encoding
    UTF-8


    forceEncoding
    true



    characterEncodingFilter
    /*

十五. 过滤器的生命周期

  1. tomcat容器启动时,会先实例化,再初始化
  2. 访问过滤的servlet时,会调用doFilter方法
  3. 容器销毁或修改filter时,会调用destroy方法

十六. Cookie

  1. 在客户浏览器端保存用户数据
  2. 用户再登录网页时会携带cookie里的数据
    新增cookie:
    Cookie cookie = new Cookie(name, pwd);
    //设置cookie的失效时间 1个月
    cookie.setMaxAge(130246060);
    response.addCookie(cookie);

获取cookie:
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
}
}

十七. 使用Log4j记录日志

日志级别:
Error : 错误
Info : 业务日志
Debug : 调试
Warning : 警告

级别从高到低(选择了高级别就不会打印低于它级别的日志):
Error warning info Debug

	Logger log = Logger.getLogger(TestLog.class);
	log.error("系统炸了");
	log.info("系统运行稳定");
	log.debug("系统进行调试");

log.warn(“系统警告”);

十八. JSP

  1. JSP是java的专属网页。以.jsp结尾
  2. JSP组成:html+css+js + java
  3. JSP不能单独展示,要运行在tomcat容器中
  4. JSP本质是一个servlet

十九. JSP执行过程

  1. JSP文件会通过tomcat自带的servlet容器,把jsp文件转换成相应的servlet类(.java文件)
  2. 会把.java文件编译成.class文件
  3. 交于JVM写出相应的网页

二十. JSP三大指令

  1. 编译器指令
    1.1 Page指令:
    1.1.1 指定编码,文件格式:
    <%@ page language=“java” contentType=“text/html; charset=utf-8”
    pageEncoding=“utf-8”%>
    1.1.2 导入相应jar包:
    <%@ page import=“java.util.Random”%>
    1.1.3 出错跳转的页面
    <%@ page errorPage=“err.html” %>

1.2 Taglib指令,添加命名空间:
1.2.1页面添加Jstl标签库
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

1.3 Include静态导入指令:
<%@ include file=“Two.jsp” %>

  1. 语法指令
    2.1 页面输出
    <% String str = “极客卓越”; %>

<%=str %>

2.2 声明全局变量和方法 <%! String strs = "极客巅峰"; %> <%! public String eat(){ return "晚上吃肉!"; } %>

<%= eat() %>
3. 动作指令
3.1 页面输出
<% String str = “极客卓越”; %>

str

3.2 动态导入 3.3 页面跳转

二十一. contentType,pageEncoding,charset区别

  1. contentType:相当于jsp本身的格式,通知servlet容器该jsp以什么编码转换为servlet
  2. pageEncoding : Jsp的指令属性,告诉servlet以什么编码输出给用户看
  3. charset : Html的meta标签属性,该HTML以什么编码展示

二十二. 静态导入与动态导入的区别

1. 静态导入属于编译器指令,动态导入输入动作指令
2. 静态导入,会把两个Jsp页面编译成一个servlet,不能有同名的属性和方法名
3. 动态导入,两个jsp会编译成两个servlet,两个servlet的同名变量和方法不会冲突
4. 静态导入以文件路径,动态导入以访问路径

二十三. 隐式注释与显式注释的区别

  1. 显式注释 -针对于浏览器而言,jsp编译器不认
  1. 隐式注释 -针对于jsp编译器的
    <%-- 隐式注释 --%>

二十四. JSP九大内置对象

  1. request:客户端的请求
  2. response:服务端的响应
  3. pageContext:JSP的上下文,可以通过它获取其他八大对象
  4. session : 服务端保存用户信息
  5. application :Servlet的上下文,保存全局参数
  6. config :存放配置参数
  7. out : 服务器向页面输出的流对象
  8. page : 页面本身,相当于this
  9. exception : 页面中捕获的异常,针对于错误网页

二十五. JSP四大作用域

  1. Application:项目不关闭,作用域就一直存在,通常存放系统参数

  2. Session : 用户浏览器不关闭,作用域就不会消失

  3. Request : 当前页面与下一个转发页面作用域会存在

  4. pageContext :当前页面作用域会存在

    getServletContext().setAttribute("name", "宗伟");
    request.setAttribute("name", user.getName());
    request.getSession().setAttribute("name", "彭辉");
    

<% pageContext.setAttribute(“name”, “王科”); %>

二十六. JSP页面输出的3种方式

<%=application.getAttribute("name") %>
<jsp:expression>application.getAttribute("name")</jsp:expression>
<% out.println(application.getAttribute("name")); %>

二十七. EL表达式

1.为了简化jsp从四大作用域取值

<h1>恭喜<%=session.getAttribute("name") %>注册成功!!</h1>
<h1>恭喜 ${sessionScope.name} 注册成功!!</h1>
<h1>恭喜 ${applicationScope.name} 注册成功!!</h1>
<h1>恭喜 ${requestScope.name} 注册成功!!</h1>
<h1>恭喜 ${pageScope.name} 注册成功!!</h1>

2.取值顺序:page>request > session > application

<h1>恭喜 超级简化版 ${name} 注册成功!!</h1>
  1. EL对象与集合取值
<h1>EL表达式-对象取值:${user.getName()} </h1>
<h1>EL表达式-对象取值:${user.name} </h1>

4.EL取值判断

<h1>EL表达式-取值判断:${pwd !=null?pwd:"没有密码"} </h1>
<h1>EL表达式-为空判断:${empty pwd} </h1>
<h1>EL表达式-算法运算:${i+j} </h1>
<h1>EL表达式-单纯拼接:${i}${j} </h1>
<h1>EL表达式-逻辑判断:${i > j} </h1>
<h1>EL表达式-逻辑判断:${i == j} </h1>
<h1>EL表达式-逻辑判断:${i eq j} </h1>

二十八. JSTL标签库

  1. 它是一个开源的标签库
  2. 简化JSP的页面开发,通常配合EL表达式进行业务逻辑处理
  3. C标签库是JSTL的核心标签库,也是开发最常用的标签库

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

  1. 页面输出

<c:out value="${pwd}" default=“宗伟”></c:out>

  1. 在session设值

<c:set var=“sex” value=“男” scope=“session”></c:set>

  1. 逻辑判断

<c:if test="${ sex == ‘男’}">

好男儿志在四方

</c:if>

  1. 多层逻辑判断
    <c:choose>
    <c:when test=" s e x = = ′ 男 ′ " > < h 1 > 好 男 儿 志 在 四 方 < / h 1 > < / c : w h e n > < c : w h e n t e s t = " {sex == '男'}"> <h1>好男儿志在四方</h1> </c:when> <c:when test=" sex=="><h1></h1></c:when><c:whentest="{sex == ‘女’}">

    巾帼不让须眉


    </c:when>
    <c:when test="${sex == ‘人妖’}">

    萨瓦迪卡


    </c:when>
    </c:choose>
  2. 循环取值
    <c:forEach var=“xx” items="${list}" >

    ${xx.name}

</c:forEach>
6. 分割取值
<% request.setAttribute(“ages”, “20,30,33,44,55”); %>

<c:forTokens items=" a g e s " d e l i m s = " , " v a r = " a g e " > < h 1 > 年 龄 : {ages}" delims="," var="age"> <h1>年龄: ages"delims=","var="age"><h1>{age}
</c:forTokens>
7. 移除参数
<c:remove var=“sex”/>

二十九. Ajax

静态网页请求,不同于Form表单提交时跳转,Ajax可以进行静态的局部网页刷新
$.ajax({
url:"/LoginServlet",
type:“get”,
async:true,//是否异步请求
success:function(data){
alert(data);
}
});

	$.post("/TestServlet",{"name":"宗伟","pwd":"123"},

function(data){
alert(data);
});

三十. 监听器

  1. 监听器也是JavaEE的重要组件之一

  2. 是用来监听三大作用域(request,session,application)的状态和值,当发生改变时会触发相应的事件
    Application:
    public class MyApplicationListener implements ServletContextListener,ServletContextAttributeListener{

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("—Apllication销毁----");
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
    System.out.println("----Apllication初始化----");
    }

    @Override
    public void attributeAdded(ServletContextAttributeEvent event) {
    System.out.println("----Apllication 新增----");
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent event) {
    System.out.println("----Apllication 移除----");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent event) {
    System.out.println("----Apllication 替换----");
    }}

Session:
public class MySessionListener implements HttpSessionListener,HttpSessionAttributeListener{

@Override
public void sessionCreated(HttpSessionEvent se) {
	System.out.println("创建session");
}

@Override
public void sessionDestroyed(HttpSessionEvent se) {
	System.out.println("销毁session");
}

@Override
public void attributeAdded(HttpSessionBindingEvent event) {
	System.out.println("新增session值");
}

@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
	System.out.println("移除session值");
}

@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
	System.out.println("替换session值");
}

}

Request:
@WebListener
public class MyRequestListener implements ServletRequestListener, ServletRequestAttributeListener {

public void requestDestroyed(ServletRequestEvent arg0)  { 
     System.out.println("request销毁");
}

public void attributeRemoved(ServletRequestAttributeEvent arg0)  { 
	   System.out.println("移除request作用域里的值");
}

public void requestInitialized(ServletRequestEvent sre)  { 
	  System.out.println("request初始化");
}

public void attributeAdded(ServletRequestAttributeEvent arg0)  { 
	System.out.println("新增request作用域里的值");
}

public void attributeReplaced(ServletRequestAttributeEvent arg0)  { 
	System.out.println("替换request作用域里的值");
}

}

三十一. 销毁Session的两种方式

  1. 手动:request.getSession().invalidate();
    2.Web.xml里配置

    1

三十二. 自定义标签(Tag文件)

  1. 新建一个tag文件
    <%@ tag language=“java” pageEncoding=“utf-8”%>

<%@ attribute name=“action” required=“true”%>
<%@ attribute name=“subName” required=“true”%>

账号: 密码:
  1. 引用自定义标签
    <%@ taglib tagdir="/WEB-INF/tags" prefix=“a” %>

<a:MyFirstTag subName=“注册” action="/MyServlet"></a:MyFirstTag>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值