欢迎光临散文网 会员登陆 & 注册

JavaEE知识总结

2018-03-22 18:45 作者:swiss126  | 我要投稿

JavaEE知识总结

一、JSP基础

1、JSP的本质是Html嵌入Java程序

2、JSP属于View层,只能访问Service(Ctrl)层

3、Tomcat是一个容器,用来把.jsp转成.java,编译成.class

4、在JSP里面写Java代码:

<%@page import="包名命令"%> JSP导包

<% %>Java代码

<%=变量名%>输出数据

<%! 变量%> 定义属性

<%-- --%>注释

二、JSP九大内置对象

1、out   javax.servlet.jsp.JspWriter   用于页面的输出

2、request   javax.servlet.http.HttpServletRequest   请求

3、response   javax.servlet.http.HttpServletResponse   响应

4、config   javax.servlet.ServletConfig   

服务器的配置信息,可以得到初始化信息

5、session   javax.servlet.http.HttpSession   

它是一个域对象(用来存用户信息)

6、application   javax.servlet.ServletContext   

它也是一个域对象(用来存用户的信息)

7、pageContext   javax.servlet.jsp.PageContext   

它是jsp的页面容器,也是域对象(可以得到其它内置对象)

8、page   就是当前的jsp类的对象

9、exception   java.lang.Throwable   当页面发生异常,在错误页中才起作用

四大作用域:都有setAttribute()和getAttribute()方法

request: 保存在一次请求当中

pageContext : 保存在当前页

session: 保持在一次会话当中

application: 保持在服务器, 至到服务器关闭

三、EL表达式

1、格式

输出数据:${变量 }

判断是否为空:${empty 变量}返回值true为空

计算:${表达式}

2、EL表达式有11个内置对象

1.pageScope

作用:在pageContext域对象中去获取值;

用法:${pageScope.xxx}

2.requestScope

作用:在request域对象中去获取值;

用法:${requestScope.xxx}

3.sessionScope

作用:在session域对象中去获取值;

用法:${sessionScope.xxx}

4.applicationScope     

作用:在application域对象中去获取值;

用法:${applicationScope.xxx}

5.param

作用:用于在页面接收参数,类似于request.getAttribute(),获取出来是单值,就是说你传个数组来,我只能接受到第一个值。

用法:${param.xxx}

6.paramValues

作用:同样用于在页面接收参数,同样类似于request.getAttribute(),获取出来就是多值。

用法:${param.xxx}

7.header

作用:用于获得请求头中的值;

用法:${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}

因为cookie.JSESSIONID得到的是一个cookie对象,所以需要.value才能得到cookie的值。

11.pageContext

作用:例如:获得其他的域,操作其他的域。

用法:

例如:${pageContext.session.id}

得到session并且得到session的id

*当只输入参数名,不输入域的时候,EL表达式优先显示范围小的参数

 page<request<session<application

四、JSTL

1、准备工作

使用工具包:jstl.jar,standard.jar;

导包: <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

 如果出现报错: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、语法

循环遍历:

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

判断:

<c:if test="${3>2}">如果满足条件,就输出这句话</c:if>

五、Cookie

1、写入cookie

//登录时间

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保存时间单位是秒,目前保存一天

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+="上次登录时间:"+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: 先写一个servlet
2: 再写配置文件
3: 再根据web.xml里配置的路径,调用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:第一次访问Servlet所在地址时执行初始化方法

doGet:Servlet收到get请求调用的方法

doPost:Servlet收到post请求调用的方法

destroy:正常关闭服务器时执行的销毁Servlet释放资源的方法

service:收到get和post请求都能调用的方法

4、Servlet可以使用的方法与对象

(1)重写Servlet中的所有方法

(2)JSP中的所有作用域都可以使用,因为JSP的本质就是一个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的用处是根据条件过滤掉用户发出的不合法请求,减少服务器的工作量。doFilter就是用来判断是否过滤请求的方法。

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(\"请先登录!\");top.location=\"login.jsp\";</script>");

else chain.doFilter(request, response);

}catch(Exception e){

((HttpServletResponse)response).getWriter().print(

"<script type=\"text/javascript\">alert(\"请先登录!\");top.location=\"login.jsp\";</script>");

}

}else{

chain.doFilter(request, response);

}

}

doFilter中有很多条件,只有满足条件请求的才会执行chain.doFilter(request, response);方法,让请求通过Filter。

八、Listener

Listener监听器用来监听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("---创建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>



JavaEE知识总结的评论 (共 条)

分享到微博请遵守国家法律