jsp学习

本文档详细介绍了JSP的基础知识,包括项目创建、目录结构、常用语法如脚本元素、注释、内置对象、EL表达式及JSTL的使用。同时,深入探讨了web.xml配置、异常处理、会话跟踪、cookie操作以及页面间的数据传递。

关于这几天学习jsp的笔记

1.项目的创建项目创建 勾选web application
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
详细教程
下载地址

在这里插入图片描述
在这里插入图片描述

//页面导入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 最后一天跨年的笔记 仅以代码纪念

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值