两个部分:servlet和jsp
servlet:1.生命周期
2.API类
3.会话跟踪技术
4.过滤器
5.监听器
jsp: 1.标准动作
2.el表达式
3.jstl
4.自定义标签
5.生命周期
jsp
1.标准动作: 以<jsp:开头>
动态包含
<jsp:include page="a.jsp">
<jsp:param name="name" value="张三"></jsp:param>
<jsp:param name="sex" value="男"></jsp:param>
</jsp:include>
转发
<jsp:forward page="/绝对不能加工程名">
</jsp:forward>
request.getRequestDispatcher("/绝对不能加工程名").forward(request,response); //servlet
重定向
<form action="">
<a href="">
<script>
location =
</script>
response.sendRedirect("");//Servlet
从作用域中取对象,取不出来,就创建,然后保存作用域
id=stu是作用域的键
<jsp:useBean id="stu" class="com.beans.Student" scope="page/request/session/application"></jsp:useBean>
给属性赋值
<jsp:setProperty name="stu" property="sid" value="100"></jsp:setProperty>
取值${stu.sid}
<jsp:getProperty name="stu" property="sid"></jsp:property>
2.el表达式
算术运算
${1+2} //3
${"1"+2} //3
${"1"+"2"} //3
${1/2} //0.5
${"a"+"b"} //报错
关系
${3>2} ${3 gt 2}
${2<3} ${2 lt 3}
${2==3} ${2 eq 3}
${2!=3} ${2 ne 3}
${2>=3} ${2 ge 3}
${2<=3} ${2 le 3}
逻辑
${ ! true} ${not true}
${true && false} ${true and false}
${true || false} ${true or false}
空
${empty ""}
三元
${ ? : }
隐式对象
${param.x}
${pageScope.x}
${requestScope.x}
${sessionScope.x}
${applcationScope.x}
${pageContext.request.contextPath}
${cookie.x}
${header.x}
${paramValues.x}
禁用:
1.\${1+2}
2.<%@page isELIgnored="true"%>
3.在web.xml(要删除work下内容)
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
3.jstl
标准标签库
1.核心
通用(对变量操作)
<c:set var="x" value="1+2" />
<c:out value="${x}"/>
<c:remove var="" />
条件
<c:if test="${}" var="f">
</c:if>
<c:if test="${not f}">
</c:if>
<c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwisze>
</c:choose>
迭代
<c:forEach items="${list}" var="i" varStatus="x">
</c:forEach>
<c:forEach var="i" varStatus="x" begin="1" end="100" step="1">
</c:forEach>
<%
String str = "sunjob,good";
pageContext.setAttribute("str",str);
%>
<c:forTokens items="${str}" delims="," var="x">
${x } <br>
</c:forTokens>
2.格式化
<fmt:formatDate value="" pattern="" >
<fmt:formatNumber value="" pattern="">
3.SQL标签
${fun:length(x)}
4.函数
4.自定义标签
标签处理类(继承SimpleTagSupport类,重写doTag方法)
标签库描述文件(WEB-INF/xx.tld)
导入描述文件(<%@taglib prefix="" uri="" %>
指令
静态包含
<%@include file="" %>
注释
<!-- -->
<%-- --%>
静态
html/css/javascript
小脚本
<% 生成代码是serivce内 %>
表达式
<%= 也是service内,相当out %>
声明
<%! 生成代码是service外面 %>
隐式对象
范围 pageContext/request/session/application
输入输出:out,response,request
其它:page/config/exception
直接可以使用是8个,exception要
<%@page isErrorPage="true" %>
5.生命周期
转译-->编译
转译:jsp-->java代码
编译:java-->.class
------------------------------------
servlet
1.生命周期
加载-->实例化-->初始化--》服务--》销毁
2.API类
HttpServletRequest
request.getQueryString(); ?后面的内容
request.getContextPath(); 工程名
request.getServletPath(); 网页名
request.getAttribute("");
request.setAttribute("","");
request.getParameter("");
request.getParameterValues("");
request.getRequestDispatcher("").forward(request,response);
request.getSession();
request.setCharacterEncoding("utf-8");
HttpServletResponse
response.getWriter();
response.sendRedirect("");
response.setContentType("text/html;charset=utf-8");
HttpSession
session.setAttribute("");
session.getAttribute("");
session.getServletContext();
ServletContext
setAttribute("");
getAttribute("");
getRealPath("");
ServletConfig
3.会话跟踪技术
session
cookie
隐藏表单域
url重写
4.过滤器
实现javax.servlet.Filter接口,在web.xml注册和映射
5.监听器
实现接口如ServletContextListener/HttpSessionListener
在web.xml注册
<listener>
<listener-class>类名</listener-class>
</listener>
-----------------------------------------------
model
DAO
Entity
连接池
log4j
1.开发包(到lib)
2.配置文件log4j.properties (到src)
输出位置(控制台、文件、邮箱)
级别(debug/info/warning/error)
静态包含和动态包含区别
静态包含: 转译包含
动态包含:每次请求时
转发和重定向区别
转发一次请求
重定向两次请求