Web回顾

JavaWeb回顾

Tomcat

  • 命令
  • 配置
  • 部署

JSP

语法

JSP页面由以下几部分组成

  1. 页面指令
  2. HTML代码
  3. Java代码片段
  4. JavaScript代码
  5. EL表达式
  6. JSTL标签

页面指令

  • page : 用来设置页面相关的属性、编码
    • language
    • contentType
    • import
    • pageEncoding
    • isErrorPage
    • errorPage
  • include: 静态(编译期包含)包含其他页面到当前的JSP中
    • file
  • taglib: 引入标签库
    • prefix
    • uri

Java代码片段

  • 普通Java代码片段

    <%
      out.println("Hello World!");
    %>
    
  • 变量输出

    <% String message = "Hello JSP"; %>
    
    <%=message %>
    
  • 变量声明、方法定义代码片段

    <%! 
    	private int age = 70;
    	
    	public int getAge() {
            return age;
        }
    %>
    
  • Java代码中嵌套HTML

    • 纯Java代码拼接字符串

      <%
      out.println("<table>");
      for(int i = 0; i < 3; i++) {
          out.println("<tr>");
          for(int j = 0; j < 3; j++) {
      		out.println("<td>i: "+i+", j: "+j+"</td>");
          }
          out.println("</tr>");
      }
      out.println("</table>");
      %>
      
    • 嵌套HTML标签

      <table>
          <%
              for(int i = 0; i < 3; i++) {
          %>
          <tr>
          	<%
              for(int j = 0; j < 3; j++) {
              %>
              <td>i: <%=i %>, j: <%=j %></td>
              <%
              }
              %>
          </tr>
           <%
              }
           %>
      </table>
      
      

JSTL&EL

JSTL是JSP的标准标签库,作用就是减少JSP中的JAVA代码片段,提高JSP页面代码的可读性。

EL表达式是一门表达式语言,通常用来配合JSTL实现变量取值,具体来说可以读取作用域中、请求头中、Cookie中、请求参数中的变量值。

JSTL标签库分类
  • 核心标签库(core)
    • out
    • set
    • catch
    • forEach
    • forTokens
    • if
    • choose、when、otherwise
    • url、param
  • 格式化标签库(fmt)
    • formatDate
    • formatNumber
EL内置对象
  • 取Cookie中的值: cookie

    ${cookie.message} // 取Cookie中key为message的属性值
    
  • 取请求头中的值: header

    ${header.username}  //取请求头中key为username的属性值
    
  • 取请求参数中的值: param

    ${param.username}  //取请求参数中key为username的属性值
    
  • 取作用域中的值

    EL表达式取作用域中的值,可以不显式使用内置对象,el会自动从最小的作用域pageScope中取,如果没找到指定参数,再去requestScope中找,再是sessionScope,最后是applicationScope。

    显式取特定作用域中的属性值

    • pageScope
    • requestScope
    • sessionScope
    • applicationScope
    ${sessionScope.user}  // EL会直接去session作用中取值,即使没有取到值也不会去其他作用域中尝试取值
    
    
JSP中的动作标签
  • useBean: 实例化一个Java类
    • class: 指定类的全名
    • id: 对象引用的变量名
  • setProperty: 设置属性值
    • name: 指向useBean实例化的对象名称
    • property: 对象的属性名
    • value: 要设置的值
  • getProperty: 获取属性值
    • name
    • property
  • forward: 请求转发(地址栏不变)
  • param: 一般作为其他的标签的子元素,用于传参
  • include: 动态(在运行时才包含进来)包含其他JSP页面
四大作用域
  • pageContext: PageContext

    范围:当前页面

  • request: HttpServletRequest

    范围:一次请求

  • session: HttpSession

    范围:一次会话

  • application: ServletContext

    范围:整个应用声明周期

九大内置对象
  • out
  • pageContext
  • request
  • session
  • application
  • response
  • page
  • config
  • exception

Servlet

Servlet基础
  • 如何创建一个Servlet类?

    1. 创建一个普通Java类
    2. 继承HttpServlet
    3. 重写doGet、doPost方法
  • 注册Servlet

    • 注解的方式: @WebServlet

    • xml的方式: 在web.xml中添加

      <servlet>
      	<servlet-name></servlet-name>
          <servlet-class></servlet-class>
      </servlet>
      <servlet-mapping>
      	<servlet-name></servlet-name>
          <url-pattern></url-pattern>
      </servlet-mapping>
      
      
Servlet生命周期
  • void init(ServletConfig config); --初始化Servlet时调用(默认首次请求)
  • void service(HttpServletRequest req, HttpServletResponse resp); – 每次请求此Servlet时调用
  • void destroy(); --销毁 (应用停止时调用)
文件上传
  • 通常文件上传: apache的 commons-fileupload、commons-io包。
    • FileItem
    • DiskFileItemFactory
    • ServletFileupload
  • Servlet3.0: @MultipartConfig
    • Part
查询分页
  • 物理分页

    物理分页是在查询数据库时真正的进行了分页处理,每次只取一页的数据。

  • 逻辑分页

    逻辑分页在查询数据库时并没有做分页逻辑,而是把所有数据一次性加载到内存,在用户需要查看数据时,在内存中拿到当前页需要展示的数据,返回给页面展示。

  • 通用分页参数

    • currentPage: 当前页
    • pageSize: 每页展示条数
    • totalCount: 总条数
    • data: 当前页数据
    • totalPage: 总页数

Cookie&Session

Cookie的特点
  • 存储的数据大小很有限
  • Cookie是存储在客户端的
  • Cookie不能存储中文
  • 安全性较低,不适合存储敏感数据
Session的特点
  • Session存储的数据大小没有上限
  • Session是存储在服务端
  • Session中可以存储Java中所有类型的数据
  • 安全性较高
  • Session是由Cookie演变而来的一种技术,本身也需要依赖Cookie(JSESSIONID)

Cookie和Session都属于会话跟踪技术,解决了HTTP协议无状态的问题。

Cookie的使用
  • 创建Cookie

    Cookie cookie = new Cookie(“key”, “value”);

  • 设置Cookie属性

    cookie.setMaxAge(60); //单位是秒, 设置为0代表立马删除

    cookie.setPath();

    cookie.setDomain();

  • 写Cookie

    response.addCookie(cookie);

  • 获取Cookie中的数据

    Cookie[] cookies = reuqest.getCookies();

    // 遍历查找需要获取的数据

Filter

Filter的原理是能够在Servlet之前去接触到请求,进而完成一些例如: 设置请求参数、修改请求数据、重定向操作。

Filter是一个链式结构,应用中支持同时存在多个过滤器,他们通过chain.doFilter(req, resp)方法连起来,如果在某个filter中没有调用此方法,那么请求将无法正常往下进行。

Filter的使用
  1. 创建Filter
    1. 新建一个普通Java类实现Filter接口
    2. 重写doFilter方法。 (看情况重写声明周期方法init、destroy)
  2. 注册Filter
    • xml的方式 在web.xml中配置,和servlet类似
    • 注解的方式 @WebFilter

Listener

Listener用于监听特定的操作,当感兴趣的操作触发时,会自动回调Listener中的方法。

从作用上来说主要分以下几类:

  • 监听三大作用域创建、销毁
    • ServletRequestListener
    • HttpSessionListener
    • ServletContextListener
  • 监听三大作用域属性添加、移除、替换
    • ServletRequestAttributeListener
    • HttpSessionAttributeListener
    • ServletContextAttrbuteListener

上面这六种监听器在使用时都需要通过注解@WebListener、或者在web.xml中注册

使用方法
  1. 创建一个普通类,实现对应的Listener接口,并实现其中的方法
  2. 注册Listener。 注解、web.xml
  • 不需要注册的监听器
    • 监听特定对象从Session作用域中添加、移除的: HttpSessionBindingListener
    • 监听Session钝化、活化: HttpSessionActivationListener
使用方法
1. 让特定对象实现对应的Listener接口

  1. 重写监听方法,完成业务操作

Ajax&jQuery Ajax

原生Ajax
  • 对象: XMLHttpRequest (xhr)
  • get操作
    1. 创建请求对象
    2. 设置请求参数
    3. 设置回调函数
    4. 发起请求
  • post操作
    1. 创建请求对象
    2. 设置请求参数
    3. 设置回调函数
    4. 设置请求头(编码格式)
    5. 发起请求
jQuery中的Ajax
  • ajax(url, {options});
  • get(url, data, fn, ‘json’);
  • post(url, data, fn, ‘json’);
  • getJSON(url, data, fn);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值