JAVAEE

本文详细介绍了Web开发中关键配置项的使用方法,包括servlet的启动顺序配置、错误页配置、会话管理配置等,同时还讲解了HTTP响应、Cookie与Session的管理方式,以及JSP与EL表达式的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

load-on-startup              
                                        1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
                                        2)它的值必须是一个整数,表示servlet应该被载入的顺序                                       
                                        2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;                                       
                                        3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。                                       
                                        4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。                                       
                                        5)当值相同时,容器就会自己选择顺序来加载。                                       
                                        所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
                                       
error-page的配置
                                        <error-page>
                                        <error-code>404</error-code>
                                        <exception-type>java.lang.Exception</exception-type>//二选一
                                        <location>/error404.jsp</location>errorPage大小必须超过1KB,否则在IE下会报异常
                                           或者设置<% response.setStatus(200); // 200 = HttpServletResponse.SC_OK%>这样设置此页面为正常页面
                                           错误码: <%=request.getAttribute("javax.servlet.error.status_code")%> <br>
                                           信息: <%=request.getAttribute("javax.servlet.error.message")%> <br>
                                            异常: <%=request.getAttribute("javax.servlet.error.exception_type")%> <br>
                                        </error-page>
                                       
session-config    
                                        <session-config>
                                <session-timeout>30</session-timeout>
                                                            //用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。
                                                            如果session-timeout 元素的值为零或负数,则表示会话将永远不会超时。
                              </session-config>
                                        HttpSessionListener HttpSessionBindingListener HttpSessionBindingEvent
                   

web.xml调用顺序
                                   context-param -> listener -> filter -> servlet
                                   context-param -> filter -> listener -> servlet //配置顺序


                                   



http1.1
                                   request.getRequestDispatcher("/index.jsp").forward(request, response);//200
                                   response.sendRedirect("/MyWebXML/index.jsp");//302
                                             response.setStatus(302);重定向
                                             response.setHeader("location", "/MyWebXML/index.jsp");//等同于sendRedirect();
                                             request.getHeader("User-Agent")//获取用户所用的浏览器信息
                                             setHead替换已有报头,addHead不替换,只新增一个报头
               响应头     
                              响应报头必须在任何文档内容发送到客户端钱发送
                              response.setHead("Cache-Control","no-cache");
                              response.setHead("Pragma","no-cache");//Http1.0方法
                              response.setHead("Cache-Control","max-age='+age);//设置缓存过期时间
                              response.setHead("Expires",time);//设置缓存过期时间
               response.setHeader( "Refresh" , "5;URL=http://www.163.com");//指定5秒之后连接新网址
                              response.setHeader( "Retry" "5" );//指定5秒之后重新连接
                              
               下载过程
                                response.setContentType("application/x-msdownload");
                response.setCharacterEncoding("UTF-8");
                response.addHeader( "Cache-Control", "no-cache" );
                response.addHeader( "Content-Disposition", "attachment; filename=termInf.txt");
        Cookie  c.setMaxAge(age);如果不设置Age,则默认在浏览器关闭后此cookie销毁.
                c.setPath("/");设置服务器中所有路径都能访问到此Cookie.浏览器间不共用Cookie.
                               若不设置,cookie默认只能被此servlet和此servlet所在路径和子路径的其他servlet
                               访问,而不能被不同父路径的servlet访问.
                从客户端获取来的Cookie只能查看其Name和Value,不存在其他值.
                第二次存入Cookie时会覆盖同名Cookie.
                禁用cookie的浏览器会忽略set-cookie首部.
        session
               session在第一次request.getSession();时被创建.当首次访问JSP时候Session也被默认创建了,因为JSP内
               置了session对象.默认session的存活周期为30分钟.
               在浏览器关闭后session则会被销毁.session所创建的cookie默认为内存级cookie.
               session.invalidate();丢弃session.
        PrintWriter
                    response.getWriter();
                    response.setCharacterEncoding( "UTF-8" );
                         * This method has no effect if it is called after
                         * <code>getWriter</code> has been
                         * called or after the response has been committed.
                         设置字符编码必须在getWriter()之前设置,不然不起作用。
                    this.getServletContext().getResourceAsStream("/spring.jar");
                         从当前项目的根路径得到某文件。
                    this .getServletConfig().getInitParameter(name);
                         获取web.xml配置的初始化参数。 初始化完成后才能访问servletConfig 
    
        servletConfig&ServletContext
                    servletConfig.getInitParameter();//得到的是init-param
                    servletContext.getInitParameter();//得到的是context-param
                 Listener
       HttpSessionListener/HttpSessionBindingListener/HttpSessionAttributeListener/ServletContextListener/ServletRequestListener
                                   HttpSessionBindingListener对于此listener,可以用entity继承此监听器,当此监听器被加入到
                  session的参数中时会触发valueBound()方法,去除时触valueUnbound().
                  HttpSessionBindingListener不需要在web.xml中配置.
         requestDispatcher
                  请求转发后request所有的变量parameter也会随着request传到指定下一个处理servlet或JSP中.
         encodeURL&encodeRedirectURL
                   response的方法,只能对响应进行URL重编码
                  不能对静态页面进行URL重写,所以要使用URL重写必须使用动态页面JSP。
          session
                  request.getSession().setMaxInactiveInterval( interval);//单位是秒
                   <session-config >
               <session-timeout >1</ session-timeout>  
               </session-config >                 //单位为分
                          session.invalidate();//此方法调用后再访问session的属性将会报异常,不过仍然能获取session的
           ID,因为session只是设为无效状态,并没有被内存回收机制回收.
                  session.setMaxInactiveInterval(0);//可能是设置处理完这次请求开始之后下次访问新的session,程                         
                  序运行完毕后才开始计算超时时间。
                    JSP,EL表达式 
                                     <%= session.isNew()%>   相当于out.print(session.isNew());//别再表达式后面加分号,否则后果可能很严
                                                                                    重.
                                                                                  不能在此表达式中加入返回void的表达式.
                                      <%! int i=0;%>全局变量的声明.
jsp                jsp隐藏元素
                                      jspWriter  out ,HttpServeltRequest request, HttpServletResponse response,Object page,PageContext  
                                                                  pageContext, ServletConfig config, ServletContext application,HttpSession session.
                    jsp注释
                              java 注释
               <%--This is a annotation--%>
               html注释
               <!--this is a annotation-->
          jsp方法
               jspInit(),jspDestory(),_jspService(),无下划线的可以覆盖,有下划线的不能覆盖
               第一个用户进来请求时,JSP才会被转换成JAVA.
               <%=pageContext.getAttribute("name" ,PageContext.APPLICATION_SCOPE) %>
                    获取某个级别的attribute
               <%=pageContext.findAttribute("name" ) %>
          禁用Scriptlet
                 <jsp-config >
                <jsp-property-group >
                <url-pattern >*.jsp</url-pattern >
                  <scripting-invalid>true</scripting-invalid >
                 </jsp-property-group >
                 </jsp-config >
          javaBean
                    <jsp:useBean id= "p" class ="com.fuiou.entity.Employee" scope="request" 
                                       type ="com.fuiou.entity.Person"/>
                    < jsp:setProperty property ="name" name ="p" value= "Ted" />
                    <jsp:getProperty property="name" name="p"/>
                    这样写SetProperty总是执行
                           <jsp:useBean id= "p" class ="com.fuiou.entity.Employee" scope="request" 
                    type="con.fuiou.entity.Person" > 如果使用了type但没有class则此bean必须已经存在.
                    <jsp:setProperty property="name" name="p" param ="name" />//param参数赋值
                    </jsp:useBean>//这样写在bean不存在时才会赋值. 默认的scope是Page
                    <jsp:setProperty property="*" name="p" />
                    //自动匹配和P所有属性名相同的参数并赋值给它.
EL表达式
            所有JSP隐含对象中,除了pageContext外,其它的都是map类的映射.   
            ${person.name}和${person['name']}一样
                         ${person[name]}这样的话,会自动寻找attribute中有没有名为name的属性. 
             ${paramValues.age[1]}获取参数值
             ${headerValues.cookie[0]}获取头信息
             ${cookie.JSESSIONID.value}获取指定cookie的值   
             ${initParam}上下文初始化参数//是servletContext的参数context-param,这容易混淆
             EL的隐含对象有:
               pageScope,requestScope,sessionScope,applicationScope,param,paramValues,cookie,
               header,headerValues,pageContext,initParam 除了pageContext,其它的都是映射.
                              *Scope只是某应用作用域上的属性映射,并不能访问其对象方法.
             ${not empty list} 此list!=null且size!=0.如果只是对象则判断此应用是否指向了某对象.
             //若lists为无效引用,则页面什么也不显示,而scriptlet则显示null.
             在算数运算中,EL将null表示成0,在逻辑运算中将null表示成false; 
             include区别
               <%@include file="include.jsp"%>
                    转化时插入JSP代码,可能会生成两个head和body.
               <jsp:include page="include.jsp">
                    运行时插入include.jsp的响应,属于
                    request.getRequestDispatcher("include.jsp").include(request,response);
               forward和response不能共用,否则会报IllegalStateException异常.
                              <jsp:param>只可能放在<jsp:include>或者<jsp:forward>中.
                              <jsp:forward>会清空缓存,这样页面只显示forward中的值.
JSTL表达式        
               CHOOSE,SET,IMPORT,REMOVE,PARAM   URL
                               <c:choose>
               <c:when test=" ${not empty dogs}">
               ${dogs.size()}
               </c:when>
               <c:otherwise>
               NO DOGS
               </c:otherwise>
               </c:choose>
               <c:set var="my" value="${dogs.get(0)} "/>
               ${pageScope.my.name}//默认作用域为page级
               < c:set target ="${dogs.get(1)} " value ="${dogs.get(0).name} " property ="name"  />
               给target的name属性赋值.
               < c:remove var ="dogs"/>//dogs为直接量
               < c:import url ="http://www.163.com"/>//可以包含外部URL
               <c:import url="include.jsp" >
               <c:param name="myName" value="AillanJen"/>
               </c:import>//同<jsp:include>
               <c:url value="index.jsp" var="urls">//URL重写
               <c:url value="/index.jsp" var="urls" >
               <c:param name="name" value="${tt} "></c:param >
               </c:url>//配置参数
               Web-INF下的资源不能直接访问.
<c:foreach>的varStatus属性
               count:当前元素在集合中的序号,从1开始计数。

               index:当前元素在集合中的索引,从0开始计数。

               first:当前元素是否是集合中的第一个元素。

               last:当前元素是否是集合中的最后一个元素。

               


资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值