关于这几天学习jsp的笔记
1.项目的创建
2.目录

3.暂时掌握和记得的知识点
/***
* jsp
*
* <% 脚本内容 Java代码 %>
*
* <%! 标识 相当于全局变量%>
*
* <%=变量名 获取该变量的值 %>
*
*<%--网页地址显示的还是当前地址 但是网页内容显示转发的指定地址 并且携带请求--%>
* <jsp:forward page="test01.jsp">
* <jsp:param name="name" value="123"></jsp:param>
* <jsp:param name="pwd" value="123456"></jsp:param>
* </jsp:forward>
*
*
* <jsp:useBean></jsp:useBean>的使用
*
* 相当于实例化userInfo对象
* <jsp:useBean id="userInfo" class="com.user.pojo.userInfo" scope="page"></jsp:useBean>
*
* userInfo存入值
* <jsp:setProperty name="userInfo" property="name" param="uname"></jsp:setProperty>
* <jsp:setProperty name="userInfo" property="age" param="uage"></jsp:setProperty>
* <jsp:setProperty name="userInfo" property="sex" param="usex"></jsp:setProperty>
*
* userInfo取值
* <h2>用户信息是:<jsp:getProperty name="userInfo" property="user"></jsp:getProperty></h2>
* <h3>姓名是:<jsp:getProperty name="userInfo" property="name"></jsp:getProperty></h3>
* <h3>性别是:<jsp:getProperty name="userInfo" property="sex"></jsp:getProperty></h3>
* <h3>年龄是:<jsp:getProperty name="userInfo" property="age"></jsp:getProperty></h3>
*
*/
/***
*
* web.xml中配置servlet
*
* <servlet>
* <servlet-name>login</servlet-name>
* <servlet-class>com.user.servlet.loginServlet</servlet-class>
* </servlet>
* <servlet-mapping>
* <servlet-name>login</servlet-name>
* <url-pattern>/login</url-pattern>
* </servlet-mapping>
*
*/
//获取异常
HTTPException exception=new HTTPException(1);
exception.getClass().getName();
/***
* 异常界面的设置
*
* page标签中 添加 isErrorPage="true"
*
*
* web.xml中配置
* <error-page>
* <error-code>500或者404</error-code>
* <location>/error.jsp</location>
* </error-page>
*
*/
//刷新页面
response.setHeader("refresh", "1");
//获取response的Writer
//直接在页面中输出内容
PrintWriter out = response.getWriter();
out.print("");
//接受的字符编码
request.setCharacterEncoding("utf-8");
//用来确保发往服务器的参数的编码格式,设置从request中取得的值或从数据库中取出的值
response.setCharacterEncoding("UTF-8");
//*************
response.setContentType("text/html;charset=utf-8");
// 等于
response.setHeader("content-type", "text/html");
response.setCharacterEncoding("utf-8");
//*************
//获取请求传过来的数据 通过getParameter
String name = request.getParameter("uname");
//获取请求传过来的数据 多选框 getParameterValues
String [] arr=request.getParameterValues("arr");
//重定向
response.sendRedirect("test.jsp");
//保存数据
request.setAttribute("name", "jack");
//转发 下一个页面可以继续接受当前请求
request.getRequestDispatcher("test.jsp").forward(request, response);
//取出数据
request.getAttribute("naem");
//获取网站作用域
HttpSession session =request.getSession();
//作用于当前项目所有页面 都可以取值
session.setAttribute("name", "jack");
/***
* 当前页面可访问作用域
* pageContext.setAttribute("data", "数据咯");
*
* 记录在服务端 浏览器未关一直可以访问
* session.setAttribute("data", "也是数据咯");
*
* 服务器未关可以一直访问
* application.setAttribute("data", "还是数据啦");
*
*/
//session
//获取页面的session 对象
HttpSession session =request.getSession();
//session 给值
session.setAttribute("名", "值");
//session 取值
session.getAttribute("名");
session.getId();//获取session的id
session.getCreationTime();//当前session的创建时间
session.getLastAccessedTime();//当前session 的最后访问时间
session.isNew();//当前session是否是一个新创建的
session.removeAttribute("名");//删除掉某值
//多选框获取选中几个 但是好像不能获取选中的具体值来着
String []str = request.getParameterValues("uremember");
if (str != null) {}//判断是否勾选记住密码
//重写地址保证sessionid相同 确保会话跟踪
//jsp页面url地址重写
response.encodeURL("test.jsp");
//servlet中url地址重写
response.encodeRedirectURL("test.jsp");
//cookie 的使用
//获取当前cookie
Cookie [] cks =request.getCookies();
if (cks!=null) {
//代码块
}
//遍历cookie 查找
for (Cookie ck : cks) {
if (ck.getName() == name) {//getName 获取存入的cookie名
ck.getValue();//getValue获取存入的cookie值
return false;
}
}
return true;
//实例化cookie 第一个参数名字 第二个参数值 同字典集合
Cookie cookie = new Cookie("name", "string");
//cookie的存在时间 秒为单位
cookie.setMaxAge(60 * 60);
//上传cookie到客户端
response.addCookie(cookie);
//EL表达式
//必须放入四个作用域中
//pageContext
//request
//session
//application
//${存在作用域中的值}
<%
int a=90;
pageContext.setAttribute("a", a);
%>
<p>${a}</p>
//创建实体类
package com.user.pojo;
public class circle {
private double r;
private final double PI = 3.14;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public double area(){
return PI*r*r;
}
}
//jsp标准动作
<jsp:useBean id="circle" class="com.user.pojo.circle" ></jsp:useBean>//创建对象
<jsp:setProperty name="circle" property="r" value="2"></jsp:setProperty>//赋值
//${}取对象的值和方法
<p>${circle.r}</p>
<p>${circle.area}</p>
//等同于
<p><%=circle.area()%></p>
整个项目忽略
<!--配置jsp-config配置节-->
<jsp-config>
<jsp-property-group>
<url-pattern>* .jsp</url-pattern>
<!-- 指定匹配模式为JSP -->
<el-ignored>true</el-ignored>
<!--设置忽略EL表达式-->
</jsp-property-group>
</jsp-config>
<!--当前页面忽略EL表达式-->
page 中添加 isELIgnored="true"
<!--转义 当前位置忽略-->
\${}
//在Jsp中有9个内置对象,同样EL表达式也为我们准备了11个隐含对象
//利用这些隐含对象可以更方便的取出页面中的一些相关数据信息,
//分别是:
pageContext
//四个作用域获取数据 默认从最小作用域开始找 找到了就停止
pageScope、requestScope、 sessionScope、 appliationScope => ${sessionScope.数据名}
param => request.getParameter("名");
paramValues => request.getParameterValues("名");
header 返回 Map => request.getHeader("名");
headerValues 返回数组 => request.getHeaders("名");
cookie 对cookie进行操作
initParam 保存一个所有web应用初始化参数的Map对象
//通过pageContext取出request等
${pageContext.request.getAttribute("a")}
//取出上一个页面传递的值 name是表单上的name属性值
${param.name}
//被选多选框传递过来的值
${paramValues.cheack[0]}${paramValues.cheack[1]}
//EL表达式的运算符
1.取数据运算符 . []
2.算数运算符 + - * / %
3.关系运算符 >= <= = != > <
4.逻辑运算符 && || !
eq 是否一样
and 并且
or 或者
//empty运算符 对字符串的判断兼容 ==null ==""
${empty 对象名}
//如果 1.对象为null 2.字符串内容为空时 3.集合或数组存在但没对象 返回true
${empty str} ${not empty str}
//等价于
if(str!=null && !str.equals("")){}
//条件运算符 等同于 三元运算符
${a>b?c:d}


//页面导入jstl库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%--//创建对象--%>
<jsp:useBean id="cir" class="com.user.pojo.circle" scope="page"></jsp:useBean>
<%--//创建变量pwd 并赋值123 作用域在page中--%>
<c:set var="pwd" value="123" scope="page"></c:set>
<%--//给对象赋值 target:对象id property: 对象属性 value:赋给对象属性的值--%>
<c:set target="${cir}" property="r" value="${pwd}"></c:set>
<hr>
//输出测试
${cir.r}
<hr>
//out输出
<c:out value="${cir.r}" ></c:out>
<%--//删除对象 --%>
<c:remove var="cir" scope="page"></c:remove>
<c:remove var="pwd" scope="page"></c:remove>
//输出测试
${pwd}<br>
<c:out value="${cir.r}" ></c:out>
<%--//页面中输出 escapeXml 是否解析值 默认为true false的话 如果输出的值来html 会解析出来--%>
<c:out value="${pwd}" default="默认值" escapeXml="false"></c:out>
<%--//条件判断--%>
<c:if test="${5<9}">5是小于9的</c:if>
<hr>
<%--//多重条件判断--%>
<c:choose>
<%--//同if--%>
<c:when test="${5>9}">五大于九</c:when>
<c:when test="${5<9}">五小于九</c:when>
<c:when test="${5==9}">五等于九</c:when>
<c:when test="${5==5}">五等于五</c:when>
<%--//所有条件都不满足 同else--%>
<c:otherwise>鬼知道五和九什么关系</c:otherwise>
</c:choose>
//foreach测试数据的添加
<%
//book是一个实体类
List<book> list =new ArrayList<>();
list.add(new book("b001","西游记",15.8));
list.add(new book("b002","水浒传",34.1));
list.add(new book("b003","哈利波特",5));
list.add(new book("b004","三国演义",45));
//要放到作用域中去!!!
pageContext.setAttribute("lists",list);
%>
<%--//foreach循环--%>
<%--// items 取出集合 var数据别名 varStatus状态信息 begin开始 end结束--%>
<c:forEach items="${lists}" var="b" varStatus="zt" begin="1" end="3">
//if判断是第几行 隔行变色
<c:if test="${zt.index%2==0}"><div style="background-color: aquamarine"></c:if>
<c:if test="${zt.index%2!=0}"><div></c:if>
//数据内容的显示
<p>${zt.index+1} | ${b.id} | ${b.name} | ${b.name} | ${b.price}</p>
</div>
</c:forEach>
//fmt格式化时间测试数据
<%
Date date=new Date();
pageContext.setAttribute("date",date);
%>
//fmt格式化数字测试数据
<c:set var="num" value="3.147823467824"></c:set>
<%--//fmt 格式化标签 可以格式化日期数字....--%>
<fmt:formatNumber value="${num}" maxFractionDigits="2"></fmt:formatNumber>
<fmt:formatNumber value="${num}" type="currency"></fmt:formatNumber>
<%--//日期的格式化--%>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
19年12月31 最后一天跨年的笔记 仅以代码纪念
本文档详细介绍了JSP的基础知识,包括项目创建、目录结构、常用语法如脚本元素、注释、内置对象、EL表达式及JSTL的使用。同时,深入探讨了web.xml配置、异常处理、会话跟踪、cookie操作以及页面间的数据传递。
3855





