JavaEE知識(shí)總結(jié)

JavaEE知識(shí)總結(jié)
一、JSP基礎(chǔ)
1、JSP的本質(zhì)是Html嵌入Java程序
2、JSP屬于View層,只能訪問(wèn)Service(Ctrl)層
3、Tomcat是一個(gè)容器,用來(lái)把.jsp轉(zhuǎn)成.java,編譯成.class
4、在JSP里面寫Java代碼:
<%@page import="包名命令"%> JSP導(dǎo)包
<% %>Java代碼
<%=變量名%>輸出數(shù)據(jù)
<%! 變量%> 定義屬性
<%-- --%>注釋
二、JSP九大內(nèi)置對(duì)象
1、out javax.servlet.jsp.JspWriter 用于頁(yè)面的輸出
2、request javax.servlet.http.HttpServletRequest 請(qǐng)求
3、response javax.servlet.http.HttpServletResponse 響應(yīng)
4、config javax.servlet.ServletConfig
服務(wù)器的配置信息,可以得到初始化信息
5、session javax.servlet.http.HttpSession
它是一個(gè)域?qū)ο?用來(lái)存用戶信息)
6、application javax.servlet.ServletContext
它也是一個(gè)域?qū)ο?用來(lái)存用戶的信息)
7、pageContext javax.servlet.jsp.PageContext
它是jsp的頁(yè)面容器,也是域?qū)ο?可以得到其它內(nèi)置對(duì)象)
8、page 就是當(dāng)前的jsp類的對(duì)象
9、exception java.lang.Throwable 當(dāng)頁(yè)面發(fā)生異常,在錯(cuò)誤頁(yè)中才起作用
四大作用域:都有setAttribute()和getAttribute()方法
request: 保存在一次請(qǐng)求當(dāng)中
pageContext : 保存在當(dāng)前頁(yè)
session: 保持在一次會(huì)話當(dāng)中
application: 保持在服務(wù)器, 至到服務(wù)器關(guān)閉
三、EL表達(dá)式
1、格式
輸出數(shù)據(jù):${變量 }
判斷是否為空:${empty 變量}返回值true為空
計(jì)算:${表達(dá)式}
2、EL表達(dá)式有11個(gè)內(nèi)置對(duì)象
1.pageScope
作用:在pageContext域?qū)ο笾腥カ@取值;
用法:${pageScope.xxx}
2.requestScope
作用:在request域?qū)ο笾腥カ@取值;
用法:${requestScope.xxx}
3.sessionScope
作用:在session域?qū)ο笾腥カ@取值;
用法:${sessionScope.xxx}
4.applicationScope
作用:在application域?qū)ο笾腥カ@取值;
用法:${applicationScope.xxx}
5.param
作用:用于在頁(yè)面接收參數(shù),類似于request.getAttribute(),獲取出來(lái)是單值,就是說(shuō)你傳個(gè)數(shù)組來(lái),我只能接受到第一個(gè)值。
用法:${param.xxx}
6.paramValues
作用:同樣用于在頁(yè)面接收參數(shù),同樣類似于request.getAttribute(),獲取出來(lái)就是多值。
用法:${param.xxx}
7.header
作用:用于獲得請(qǐng)求頭中的值;
用法:${header[‘User-Agent‘]};
8.headerValues
同上。。。
9.initParam
作用:可以獲得在web.xml中配置的<context-param>中的值;
用法:
<context-param>
<param-name>name</param-name>
<param-value>tom</param-value>
</context-param>
${initParam.name}就可以得到tom了。
10.cookie
作用:得到cookie的值,
用法:${cookie.JSESSIONID.value}
因?yàn)閏ookie.JSESSIONID得到的是一個(gè)cookie對(duì)象,所以需要.value才能得到cookie的值。
11.pageContext
作用:例如:獲得其他的域,操作其他的域。
用法:
例如:${pageContext.session.id}
得到session并且得到session的id
*當(dāng)只輸入?yún)?shù)名,不輸入域的時(shí)候,EL表達(dá)式優(yōu)先顯示范圍小的參數(shù)
page<request<session<application
四、JSTL
1、準(zhǔn)備工作
使用工具包:jstl.jar,standard.jar;
導(dǎo)包: <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
如果出現(xiàn)報(bào)錯(cuò):HTTP Status 500 - /TestEL.jsp (line: 21, column: 0) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
原因是core不兼容,改成core_rt就行了
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
2、語(yǔ)法
循環(huán)遍歷:
<c:forEach items="${list}" var="str">${str}<br/></c:forEach>
判斷:
<c:if test="${3>2}">如果滿足條件,就輸出這句話</c:if>
五、Cookie
1、寫入cookie
//登錄時(shí)間
Calendar datetime= Calendar.getInstance();
SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result=format.format(datetime.getTime());
//寫入cookie
Cookie cookie=new Cookie("LoginTime",result);
cookie.setMaxAge(60*60*24);//cookie保存時(shí)間單位是秒,目前保存一天
cookie.setPath("/WebProject");
response.addCookie(cookie);
2、讀取cookie
boolean Loginflag=false;
Cookie[] cookies=request.getCookies();//先獲取所有cookie
String welcome="歡迎"+name+"!";
session.setAttribute("name", name);
for(Cookie c:cookies){//然后遍歷查找我們需要的cookie
if(("LoginTime").equals(c.getName()))
{
welcome+="上次登錄時(shí)間:"+c.getValue();
Loginflag=true;
}
3、清理cookie
//清除登錄信息
Cookie cookie=new Cookie("LoginTime","");
cookie.setMaxAge(0);
cookie.setPath("/WebProject");
response.addCookie(cookie);
六、Servlet
1、JSP改servlet步驟:
1: 先寫一個(gè)servlet
2: 再寫配置文件
3: 再根據(jù)web.xml里配置的路徑,調(diào)用servlet
2、配置Servlet映射地址(兩種方法)
(1)在Servlet中加注釋@WebServlet("/HelloServlet")
(2)配置web.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.swiss126.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
3、Servlet的生命周期
init:第一次訪問(wèn)Servlet所在地址時(shí)執(zhí)行初始化方法
doGet:Servlet收到get請(qǐng)求調(diào)用的方法
doPost:Servlet收到post請(qǐng)求調(diào)用的方法
destroy:正常關(guān)閉服務(wù)器時(shí)執(zhí)行的銷毀Servlet釋放資源的方法
service:收到get和post請(qǐng)求都能調(diào)用的方法
4、Servlet可以使用的方法與對(duì)象
(1)重寫Servlet中的所有方法
(2)JSP中的所有作用域都可以使用,因?yàn)镴SP的本質(zhì)就是一個(gè)Servlet
七、Filter
1、配置方法:
(1)注釋:@WebFilter("/*")
(2)配置web.xml:
<filter>
<filter-name>characterFilter</filter-name>
<filter-class>
com.swiss126.productmanager.filter.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、Filter的用處是根據(jù)條件過(guò)濾掉用戶發(fā)出的不合法請(qǐng)求,減少服務(wù)器的工作量。doFilter就是用來(lái)判斷是否過(guò)濾請(qǐng)求的方法。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(!(((HttpServletRequest)request).getRequestURI().toLowerCase().contains("login"))||((HttpServletRequest)request).getRequestURI().contains("QuitServlet")){
try{
if(((HttpServletRequest)request).getSession().getAttribute("name")==null)
((HttpServletResponse)response).getWriter().print(
"<script type=\"text/javascript\">alert(\"請(qǐng)先登錄!\");top.location=\"login.jsp\";</script>");
else chain.doFilter(request, response);
}catch(Exception e){
((HttpServletResponse)response).getWriter().print(
"<script type=\"text/javascript\">alert(\"請(qǐng)先登錄!\");top.location=\"login.jsp\";</script>");
}
}else{
chain.doFilter(request, response);
}
}
doFilter中有很多條件,只有滿足條件請(qǐng)求的才會(huì)執(zhí)行chain.doFilter(request, response);方法,讓請(qǐng)求通過(guò)Filter。
八、Listener
Listener監(jiān)聽(tīng)器用來(lái)監(jiān)聽(tīng)Servlet中的各種事件
?public class OnlineListener implements HttpSessionListener {
/**
* Default constructor.
*/
public OnlineListener() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpSessionListener#sessionCreated(HttpSessionEvent)
*/
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
InitServlet.online++;
System.out.println("---創(chuàng)建session---");
}
/**
* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
*/
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
InitServlet.online--;
System.out.println("---銷毀session---");
}
}
?Listener的配置方法:
(1)注釋:@WebListener
(2)配置web.xml:
<listener>
<listener-class>
com.swiss126.productmanager.listener.OnlineListener</listener-class>
</listener>