接触jsp和servlet
今天无意中看到这个主题,功能强,界面又好看,好像有动力写博客了呢,就顺便把这两天的东西记一下,,,
编辑:通过七牛云配合qimage工具制作图床( https://jverson.com/2017/05/28/qiniu-image-v2/ ),保存的typora图片终于可以在别处显示啦
servlet
idea配置遇到的几个坑:
- 在project struct中设置class输出路径到WEB-INF
- 写好的Java文件要自己手动编译一下
- 最惨的是把 WEB-INF 打成了 WEB_INF,找了半天错fxxx
运行流程:

服务器跳转和客户端跳转:
- 服务器:服务器自己找到要跳转的页面然后发送给游览器
- 客户端:服务器发送跳转后的地址给客户端,然后客户端自己再访问跳转的地址
JSP
jsp执行过程:

页面组成元素
1 | 1. 静态内容 |
包含
1 | <jsp:include page="footer.jsp" /> //动作包含 |
指令是进行插入,只生成一个文件,动作包含生成两个文件。
跳转分为客户端跳和服务器跳,和servlet类似。
cookie
- Cookie是一种浏览器和服务器交互数据的方式。
- Cookie是由服务器端创建,但是不会保存在服务器。
- 创建好之后,发送给浏览器。浏览器保存在用户本地。
- 下一次访问网站的时候,就会把该Cookie发送给服务器。
作用域
- pageContext 当前页面
- requestContext 一次请求:所以客户端跳转和服务器端跳转的情况不同
- sessionContext 当前会话 :从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。
- applicationContext 全局,所有用户共享
JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL库有core, i18n, fmt, sql 等等。
在页面中使用JSTL需要在jsp中 通过指令进行设置:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- prefix=”c” 表示后续的标签使用都会以**<c:** 开头。如:
1 | <c:set var="name" value="${'gareen'}" scope="request" /> //设置name |
- JSTL通过**<c:if test=””>** 进行条件判断,但是JSTL没有<c:else,所以常用的办法是在<c:if的条件里取反 -_-
<c:forEach items="${heros}" var="hero" varStatus="st" >进行循环<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix='fmt' %>进行格式化
EL表达式
比JSTL简化一些:
<c:out value = "${name}" 和 ${name}是等价的
如果多个作用域中都有同一个属性,pageContext > request > session > application 的优先顺序获取。
JavaBean
根本而言,bean只是遵循了特定编码规范的Java类而已
- 提供无参public的构造方法(默认提供)
- 每个属性,都有public的getter和setter
- 如果属性是boolean,那么就对应is和setter方法
获取JavaBean的属性,只需要通过 . 符号操作就可以了。像这样 ${hero.name} ,就会自动调用getName方法了