首页
友链
关于
免责声明
Search
1
王者营地战绩数据王者荣耀查询网页源码
6,210 阅读
2
群晖Active Backup for Business套件备份Linux服务器教程
4,384 阅读
3
影视分享
4,313 阅读
4
(亲测)Jrebel激活破解方式2019-08-21
4,290 阅读
5
centos7 安装及卸载 jekenis
3,573 阅读
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
登录
Search
标签搜索
docker
springboot
Spring Boot
java
linux
Shiro
Graphics2D
图片
游戏账号交易
Mybatis
Spring Cloud
centos
脚本
Web Station
群辉
王者营地
战绩查询
平台对接
Spring Cloud Alibaba
nacos
绿林寻猫
累计撰写
249
篇文章
累计收到
26
条评论
首页
栏目
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
页面
友链
关于
免责声明
搜索到
249
篇与
绿林寻猫
的结果
2021-12-08
JSP内置对象、JSP常用动作标签、指令
JSP有9个内置对象,分别是:request(请求)、response(响应)、session(会话)、application(应用程序)、out(输出)、page(页面)、config(配置)、pageContext(页面上下文)、exception(异常)。 对象 作用及方法 Request 表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie、header和session数据的有用的方法。 Response 表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies、header头信息等)。 pageContext 是一个Javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 Session 表示一个请求的Javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。 Application 表示一个Javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。 Out 是Javax.jsp.JspWriter的实例,并提供了几个方法能用于向浏览器回送输出结果。 Config 表示一个Javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 Page 表示从该页面产生的一个servlet实例。 Exception 针对错误网页,未捕捉的例外 Request对象 Request对象代表的是来自客户端的请求,例如在form表单中填写的信息等是最常用的对象。 方法: getParameter() //获取到客户端通过表单或url请求参数发送过来的参数值 getParameterValues() //将同名的参数一次性读入String类型的数组中 getParameterNames() //获取参数名称,返回枚举类型 getMethod() //获得用户提交方式,post或get getServletPath() //获得JSP文件所在项目的路径 getRemoteAddr() //获取客户的IP地址 getServerName() //获取服务器的名称 getServerPort() //获取服务器的端口号 getContextPath() //获取项目名,与getServletPath类似 getHeader(str) //获取HTTP头文件中的指定值 getHeaders(str) //获取表头信息 请求中文乱码处理 a. 设置request请求字符编码request.setCharacterEncoding("UTF-8"); b. 取得参值后,通过转码方式将值转成合适的字符集String uname=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");String upwd=new String(request.getParameter("pwd").getBytes("ISO-8859-1"),"UTF-8"); 获取主机和客户机的信息getRemoteAddr() //获得客户主机的IPgetRemoteHost() //获得客户主机的名字getLocalAddr() //获得本地主机的IPgetLocalHost() //获得本地主机的名字getServerName() //获得服务器主机的IPgetServerPort() //获得服务器端口例如:本地计算机名为:<%=request.getLocalHost()%> Response对象 Response对象代表的是对客户端的响应,也就是说可以通过response对象来组织发送到客户端的数据。 但是由于组织方式比较底层,所以不建议一般人使用。 需要向客户端发送文字时直接用out对象即可。 方法: addHeader(String arg0,String arg1) //向页面中添加头和对应的值 addCookie(Cookie arg0) //添加Cookie信息 sendRedirect(String arg0) //实现页面重定向,URL重写 setStatus(int arg0) //设定页面的响应状态代码 setContentType(String arg0) //设定页面的MIME类型和字符集 setCharacterEncoding(arg0) //设定页面响应的编码类型 Session对象 Session对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。 HTTP是无状态协议; Web Server对每一个客户端请求都没有历史记忆; Session用来保存客户端状态信息。 打开一个浏览器就意味着打开了一个Session对象,浏览器不关闭,Session对象会一直存在(姑且这样认为),且Session对象只有一个。 如果浏览器关闭重启,会创建新的Session对象。 Session对象生命周期:创建--执行--失效 方法: setAttribute("key",value) //将参数名和参数值存放在session对象中 getAttribute("key") //获取参数值 getAttributeName() getId() //获取session对象的ID removeAttribute("key") //移除指定session中参数 getCreateTime() //获得session对象创建的时间,单位毫秒 getMaxInactiveInterval() //获得session对象的有效时间 setMaxInactiveInterval() //设置session对象的有效时间 isNew() //判断是否为一个新客户 invalidate() //使session对象失效 application对象 application对象负责提供应用程序在服务器中运行时的一些全局信息。类似于系统的“全局变量”,用于实现用户之间的数据共享。 application的生命周期是从application创建到服务器关闭。 application的存活范围比request和session都要大。 只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享。 方法: getRealPath(String arg0) //获得指定文件的路径 getMimeType(String arg0) //获取指定的文件格式 setAttribute(String arg0,Object obj) //将参数及参数值保存到application对象 getAttribute(String arg0) //获得application对象属性的值 getAttributeNames() //获得application中所有参数的名字 removeAttribute(String arg0) //移除application对象中指定的参数值 getServletInfo() //获取Servlet的当前版本信息 getContext(String arg0) //获得指定路径的context内容 getContextPath() 例如:<%=application.getRealPath("login.jsp")%> //获得login.jsp的实际路径<%=application.getResource("login.jsp")%><%=application.getContextPath()%> Out对象 作用:输出内容到HTML中。 out对象代表了向客户端发送数据的对象,与response对象不同,通过out对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过out对象直接向客户端写一个由程序动态生成的HTML文件。 常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为out对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。 方法: append(char c) //将字符添加到输出流中 clear() //清空页面缓存中的内容 close() //关闭网页流的输出 flush() //网页流的刷新 println() //将内容直接打印在HTML中 write() //与println()方法相似,区别在于println()可以输出各种类型的数据, 而write()只能输出与字符相关的数据。例如:<%out.println("这是out对象输出的信息");out.clear(); //清除缓冲区中的内容%> Page对象 Page对象是指当前的JSP页面本身,在实际开发中并不常用。 方法: getClass() //返回当时Object的类 hashCode() //返回此时Object的哈希代码 toString() //将此时的Object类转换成字符串 equals(Object obj) //比较此对象是否与指定的对象相等 clone() //对此对象进行克隆 copy(Object obj) //将此对象复制到指定的对象中 Config对象 Config对象一般用于页面初始化时传递参数。一般而言很少在页面中使用config对象。 方法: getServletContext() //获得servletContext值 getInitParameter(String arg0) //获得指定的初始化值 getInitParameterNames() //获得初始化的所有参数,返回枚举值 getServletName() //获得servlet名字 equals(Object obj) //比较此时的对象是否与指定的对象相等 toString() //获得此时对象的值 Exception对象 Exception对象用来处理页面出现的异常错误。 通常在某个页面(比如A.jsp)中加入page指令的errorPage属性来将其指向一个专门处理异常错误的页面(doError.jsp)。 <%@ page errorPage="doError.jsp" %> 方法: getMessage() //返回exception对象的异常消息字符串 getLocalizedMessage() //返回exception对象的本地化语言的异常错误。 printStackTrace() //显示异常的栈跟踪轨迹。 toString() //返回关于异常错误的简单消息描述。 fillInStackTrace() //重写异常错误的栈执行轨迹。 PageContext对象 PageContext内置对象是一个比较特殊的对象,它相当于页面中所有其他对象功能的最大集成者, 即使用它可以访问到本页面中所有其他的对象。 例如前面已经描述的request、response、out和page对象等。 由于在JSP中request和response等对象本来就可以通过直接调用方法使用,所以pageContext对象在实际JSP开发中很少使用到。 方法: getRequest():返回当前页面中的request对象。 getResponse():返回当前页面中的response对象。 getSession():返回当前页面中的session对象。 getServletContext():返回当前页面中的application对象。 getPage():返回当前页面中的page对象。 getOut():返回当前页面中的out对象。 getException():返回当前页面中的exception对象。 getServletConfig():返回当前页面中的config对象。 setAttribute(String name):给指定的属性名设置属性值。 getAttribute(String naem):根据属性名找到相应的属性值。 setAttribute(String name, Object obj, int scope):在给定的范围内设置相应的属性值。 getAttribute(String name, int scope):在给的范围内获取相应的属性值。 findAttribute(String name):寻找一个属性并返回,如果查找不到则返回null。 removeAttribute(String name):通过属性名删除掉某个属性。 removeAttribute(String name, int scope):在指定的某个范围里删除某个属性。 getAttributeScope(String name scope):返回某属性的作用域。 getAttributeNamesInScope(int scope):返回指定范围内的所有属性名的枚举。 release():释放pageContext占据的所有资料。 forward(String relativeURLpath):使用当前页面重导到另一个页面。 include(String relativeURLpath):使用当前位置包含的另一个页面。 JSP常用的动作标签: 语法 描述 jsp:include 在页面被请求的时候引入一个文件。 jsp:useBean 寻找或者实例化一个JavaBean。 jsp:setProperty 设置JavaBean的属性。 jsp:getProperty 输出某个JavaBean的属性。 jsp:forward 把请求转到一个新的页面。 jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。 jsp:element 定义动态XML元素 jsp:attribute 设置动态定义的XML元素属性。 jsp:body 设置动态定义的XML元素内容。 jsp:text 在JSP页面和文档中使用写入文本的模板 JSP三大指令: 指令 作用 <%@ page %> 设置JSP页面的属性和相关功能。 <%@ include %> 在JSP页面引入需要包含的页文件。 <%@ taglib %> 标签指令,自定义新的标签。 JSP中动态include与静态include的区别?动态include用<jsp:include>动作实现,<jsp:include page=”included.jsp” flush=”true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态include用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=”included.html” %> 。
2021年12月08日
139 阅读
0 评论
0 点赞
2021-12-08
会话跟踪技术:Session
Session在网络中被称为会话。javax.servlet.http.HttpSession接口表示一个会话,我们可以把一个会话内需要共享的数据保存到HttpSession对象中!(是一个容器,作用域对象)Session对象---内置对象,不需要构建 Session的运行机制当一个Session开始时,Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户状态的信息(例如购物车)。Servlet容器为HttpSession分配一个唯一标识符,称为Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。每次客户发出HTTP请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息。 Session对象的生命周期 Session对象的生命周期:创建-->使用-->消亡创建 当客户端浏览器第一次访问服务器时,服务器为这个浏览器创建一个Session对象。 在服务器端使用request.getSession()或request.getSession(true)方法来获得Session对象。request.getSession() --获得Session对象session.getId() --获得session对象的ID例:HttpSession sess=request.getSession(); //获取Session对象使用session.setAttribute(String name, Object obj) --将信息保存在session范围内session.getAttribute(String name) --获取保存在session范围内的信息session.getAttributeNames(); --返回Session对象中存储的每一个属性对象,枚举型 session.isNew() --判断session对象是不是新的消亡以下3种方法可以结束session对象:a. 关闭浏览器;b. 请用HttpSession的invalidate()方法;c. session超时。session对象:------HttpSession类 会话管理类HttpSession session=request.getSession(); --获得sessionsession.setAttribute("key",value); --设置session的属性值 key:String value:Object同一个session 中,KEY不能重名,重名覆盖session.getAttribute("key"); --获得session的属性值session.getAttributeNames(); --返回Session对象中存储的每一个属性对象,session.setMaxInactiveInterval(n); --设置会话时长,单位秒session.setMaxInactiveInterval(24*60*60);session.invalidate(); --设置session无效 一般用在[安全退出]session.getId(); --获取session对象IDsession.isNew(); --判断是否是新用户session.removeAttribute("key"); --删除属性session.getCreationTime(); --返回Session被创建的时间.最小单位为毫秒
2021年12月08日
158 阅读
0 评论
0 点赞
2021-12-08
JSP基本语法
注释 作用:说明、解释 HTML注释:<!-- 注释内容 --> JSP注释:<%-- 注释内容 --%> <% // %> <% /* */ %>声明 作用:定义JSP中的变量、方法以及静态方法。<%! 变量定义/方法定义/类 %><jsp:declaration>变量定义/方法定义/类</jsp:declaration> //已过时表达式 作用:将动态信息显示在页面上。<%=变量或表达式 %><jsp:expression> 变量/表达式 <jsp:expression> //已过时指令 page指令: 作用:设置JSP页面的属性和相关功能。<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>其他属性:session="true|false" 设置session是否可用,默认trueautoFlush="true|false" 设置缓冲区域是否自动清除,默认trueinfo="text" 描述该jsp页面的相关信息errorPage="URL" 当页面产生异常时跳转的路径 include指令:作用:在JSP页面引入需要包含的页文件。<%@ include file="a.jsp" %> <jsp:include page="a.jsp" %> taglib指令:标签指令,JSP新增的指令,作用:自定义新的标签。<%taglib uri="taglibURL" perfix="tagPre" %>其中: uri:表示自定义标签库的存放位置; perfix:区分不同标签库的标签名。动作 JSP中有13个动作: <jsp:include>、<jsp:forward>、<jsp:plugin>、<jsp:param>、 <jsp:params>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、 <jsp:output>、 <jsp:attribute>、<jsp:element>、<jsp:body>、<jsp:fallback>。 动作的标准格式: <jsp:include page="top.html" /> 或 <jsp:include page="top.html"></jsp:include><jsp:include> 作用:引入文件到目标页面,与<%@include%>指令十分相似。 <jsp:include page="URL" flush="true" /> 例如: <jsp:include page="top.html" flush="true" /> <jsp:include page="top.html" /> 其中:page 指明了需要包含文件的路径,这里的路径不是指绝对路径,而是指项目路径; 如何获得项目路径?String path=request.getContextPath(); flush 指定输出缓存是否转移到被导入文件中,true则包含的被导入文件中,false则包含在源文件中。 <jsp:include>动作与<%@include%>指令不同点: a. jsp:include页面被访问时调用,include指令在编译时调用; b. jsp:include包含文件与主文件相对独立,include则会合成一个,效率更高。<jsp:forward> 作用:转发请求到另外一个页面中,可以带参。 <jsp:forward page="URL" /> 例如: <jsp:forward page="error.html" /> 例如: <jsp:forward page="doreg.jsp?username=张三" /> 注意:上述代码即使连接到doreg.jsp,但浏览器地址栏仍然显示是当前页面,具备隐密性。<jsp:param> 作用:用来传递参数信息,传递主页面的参数到目标页面。 常与<jsp:forward>、<jsp:include>一起使用。 <jsp:param name="参数名" value="参数值" /> 例如: <jsp:param name="username" value="李四" /> 例如:include与param结合使用 <jsp:include page="subPage.jsp"> <jsp:param name="username" value="李四" /> <jsp:param name="password" value="10086" /> <jsp:param name="address" value="湖南长沙" /> </jsp:include> 例如:param与forward结合使用 <jsp:forward page="subPage.jsp"> <jsp:param name="username" value="李四" /> <jsp:param name="password" value="10086" /> <jsp:param name="address" value="湖南长沙" /> </jsp:forward> 接收代码都一样: String username=request.getParameter("username"); String password=request.getParameter("password"); String address=request.getParameter("address"); 注意:如果传参的是中文,注意编码问题。
2021年12月08日
163 阅读
0 评论
0 点赞
2021-12-08
Servlet与JSP(配置web.xml)
Servlet与JSP之间的关系jsp页面一分为二:一部分是前端页面<Login.jsp>,一部分是java代码<doLogin.jsp>doLogin.jsp最开始页面负责登录业务逻辑的处理,现在把代码移到Servlet中,实现前后端代码的分离。 Servlet特点特点:服务器端程序,多线程,效率高,可移植,易使用,功能强。 缺点:前端表现差劲。 Servlet最大的好处:可以处理客户端传来的HTTP请求,并返回一个响应。 Servlet比JSP要强大。如考虑性能,那肯定首先Servlet Servlet类: |——HttpServlet类 |——doGET() |——doPost() 会调用javax.servlet包,javax.servlet.http.HttpServlet包,这两个均为java扩展包。 如出现报以上2个包不存在的错误,解决办法:a.配置CLASSPATH .:d:\Tomcaat 6.0\lib\servlet-api.jarb.将开发包保存在 %JAVA_HOME%\jdk1.6.0_02\jre\lib\ext 注意: 高版本的myEclipse中的Tomcat自带的servlet-api.jar,而低版本的没带的,请将开发包拷贝到jdk1.6.0_02\jre\lib\ext文件夹下。 Servlet类创建在Java中,通常所说的Servlet是指HttpServlet对象,在声明一个对象为Servlet时,需要继承HttpServlet类或者实现Servlet接口。 HttpServlet 类是Servlet接口的一个实现类,继承此类后,需重写HttpServlet类中的方法对HTTP请求进行处理。Servlet的两种编写方式1 继承HttpServlet,重写doGet(),doPost() 2 实现Servlet,重写getServletConfig(),getServletInfo(),init(),destroy(),service()方法 其中: init() 初始化 destroy() 销毁 service() 处理请求 ==== doGet()+doPost() 配置web.xml <servlet> //设置servlet名字 <servlet-name>sa</servlet-name> //设置servlet类名 <servlet-class>com.servlet.DoReg</servlet-class></servlet> //用于映射上面<servlet>中的对外访问路径<servlet-mapping> //设置servlet的名称 <servlet-name>sa</servlet-name> //设置servlet的请求路径 <url-pattern>/reg.do</url-pattern></servlet-mapping> Servlet的生命周期 Servlet是服务器端小程序,因此生命周期受web容器(也可看作是服务器)的控制。 Servlet的生命周期分:加载程序、初始化、服务、销毁、卸载5个部分。 Servlet的生命周期5个部分 a.加载Servlet (构造方法) Web容器负责加载Servlet,当WEB容器启动时或第一次使用SERVLET时,容器会负责创建Servlet实例(需配置web.xml指定servlet的位置),成功加载后,web容器会通过映射的方式对Servlet进行实例化。 b.初始化 (init()方法) 当servlet被实例化后,容器将调用init()方法初始化这个对象。 初始化包括建立数据库连接、读取源文件信息等。 如初始化失败,则此Servlet将被直接卸载(注意,不是直接销毁,而是直接卸载)。 c.处理服务 (service()方法) 当有请求提交时,servlet调用service()方法(常用的有doGet()和doPost())进行处理。 在service()中,可通过ServletRequest接收客户的请求,也可通过ServletResponse响应客户信息。 d.销毁destory() 当WEB容器关闭或检测到一个Servlet要从容器中被删除时,会自动调用destory()方法,释放实例所占用的资源。(注意:销毁servlet实例,并不是删掉了servlet实例) e.卸载 在销毁后,该实例将等待被垃圾收集器回收,如在被回收前再次使用此servlet,会重新用init()方法初始化。 需要提醒的是: 在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次。但如果一个servlet长时间不使用,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。 Servlet API常用接口和类(一)Servlet接口对请求进行处理。任何一个Servlet对象都要直接或间接地实现javax.servlet.Servlet接口。init(ServletConfig config)//Servlet实例化后,Servlet容器调用该方法来完成初始化工作 service(ServletRequest request, ServletResponse response)//用于处理客户端的请求distroy()//当Servlet对象从Servlet容器中移除时,调用该方法,释放资源 getServletConfig()//用于获取Servlet对象的配置信息,返回ServletConfig对象 getServletInfo()//返回有关Servlet的信息,它是纯文本格式字符串,如作者、版本等 (二)ServletConfig接口位于javax.servlet包中,它封装了Servlet的配置信息。 getInitParameter(String name)//返回String类型名称为name的初始化参数值 getInitParameterNames()//获得所有初始化参数名的枚举集合 getServletContext()//用于获取Servlet上下文对象 getServletName()//返回Servlet对象的实例名 (三)HttpServletRequest接口getContextPath()//返回请求的上下文路径,以"/"开始getCookies() getMethod() getQueryString() getRequestURI()getRequestURL() getServletPath() getSession() (四)HttpServletResponse接口 addCookie(Cookie cookie) sendError(int sc) sendError(int sc, String msg) sendRedirect(String location) (五)GenericServlet类 (六)HttpServlet类 service() //服务doGet() //get提交doPost() //post提交doPut()doDelete()doHead()doTrace()doOption() Servlet跳转客户端跳转(重定向)request.sendRedirect(url); 服务器端跳转(转发)request.getRequestDispatcher(url).forward(request, response);
2021年12月08日
142 阅读
0 评论
0 点赞
2021-12-08
会话跟踪技术:Cookie
会话跟踪技术: 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。 常用的会话跟踪技术:(1) Cookie ----通过在客户端记录信息确定用户身份。(2) Session ---通过在服务器端记录信息确定用户身份。什么是Cookie?由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie具有不可跨域名性。cookies给网站和用户带来的好处非常多: 1、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径 2、Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告 3、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点 4、Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务创建Cookie 1. 通过page指令导入包(可省略)<%@ page import="javax.servlet.http.Cookie" %> 2. 创建CookieCookie newCookie=new Cookie("key",value); 3. 将Cookie响应到客户端response.addCookie(newCookie);在创建Cookie后,如未设置Cookie有效期,则该Cookie只保存在浏览上,当浏览重启后,之前设置的Cookie就不在了,要想Cookie真正保存在客户端上,就必须设置Cookie的保存时间。处理Cookie的属性在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性类型 方法名方法解释StringgetComment()返回cookie中注释,如果没有注释的话将返回空值.StringgetDomain()返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com)int getMaxAge()返回Cookie过期之前的最大时间,以秒计算。StringgetName()返回Cookie的名字。名字和值是我们始终关心的两个部分,StringgetPath()返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。booleangetSecure()如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。StringgetValue()返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。int getVersion()返回Cookie所遵从的协议版本。void setComment(String purpose)设置cookie中注释。void setDomain(String pattern)设置cookie中Cookie适用的域名void setMaxAge(int expiry)以秒计算,设置Cookie过期时间。void setPath(String uri)指定Cookie适用的路径。void setSecure(boolean flag)指出浏览器使用的安全协议,例如HTTPS或SSL。void setValue(String newValue)cookie创建后设置一个新的值。void setVersion(int v)设置Cookie所遵从的协议版本。 读取客户端的Cookie<%//从提交的HTML表单中获取,用户名String userName=request.getParameter("username");//创建一个CookieCookie theUsername=new Cookie("username",userName);//将Cookie响应到客户端response.addCookie(theUsername); %> .............. <%//获取Cookie思路//创建一个Cookie对象数组,读取用户硬盘中的Cookie放入该数组Cookie[] myCookie = request.getCookies();//设立一个循环,来访问Cookie对象数组的每一个元素for(int n=0; n<cookie.length; i++){ //获得一个cookie对象Cookie newCookie= myCookie[n];//取得这个Cookie的名字String sname=newCookie.getName(); //取得这个Cookie的内容String svalue=newCookie.getValue(); //判断元素的值是否为username中的值if(newCookie.getName().equals("username")){ out.print("你好,"+ newCookie.getValue());}} %>设置Cookie的有效期Cookie cookie = new Cookie("username","helloweenvsfei"); // 新建Cookiecookie.setMaxAge(Integer.MAX_VALUE); // 设置生命周期为MAX_VALUE 秒response.addCookie(cookie); // 输出到客户端如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。如果maxAge为0,则表示删除该Cookie。cookie的域名Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。正常情况下,同一个一级域名下的两个二级域名如www.helloweenvsfei.com和images.helloweenvsfei.com也不能交互使用Cookie,因为二者的域名并不严格相同。如果想所有helloweenvsfei.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数,例如:Cookie cookie = new Cookie("time","20080808"); // 新建Cookiecookie.setDomain(".helloweenvsfei.com"); // 设置域名cookie.setPath("/"); // 设置路径cookie.setMaxAge(Integer.MAX_VALUE); // 设置有效期response.addCookie(cookie); // 输出到客户端 Cookie的路径 Cookie的路径domain属性决定运行访问Cookie的域名,而path属性决定允许访问Cookie的路径(ContextPath)。例如,如果只允许/sessionWeb/下的程序使用Cookie,可以这么写:Cookie cookie = new Cookie("time","20080808"); // 新建Cookiecookie.setPath("/session/"); // 设置路径response.addCookie(cookie); // 输出到客户端设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾。name相同但domain相同的两个Cookie也是两个不同的Cookie。注意:页面只能获取它属于的Path的Cookie。例如/session/test/a.jsp不能获取到路径为/session/abc/的Cookie。使用时一定要注意。Cookie的安全属性HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输很机密的内容是一种隐患。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。下面的代码设置secure属性为true:Cookie cookie = new Cookie("time", "20080808"); // 新建Cookiecookie.setSecure(true); // 设置安全属性response.addCookie(cookie); // 输出到客户端提示:secure属性并不能对Cookie内容加密,因而不能保证绝对的安全性。如果需要高安全性,需要在程序中对Cookie内容加密、解密,以防泄密。
2021年12月08日
155 阅读
0 评论
0 点赞
2021-12-08
Oracle分页存储过程
CREATE OR REPLACE PACKAGE FY_PAGEIS --声明游标 TYPE CURSOR_PAGE IS REF CURSOR;END;--分页存储过程CREATE OR REPLACE PROCEDURE PROC_FY ( P_TABLENAME VARCHAR2, --表名 P_TABLECOLUMN VARCHAR2, --排序查询列 P_ORDER VARCHAR2, --排序 P_PAGESIZE NUMBER, --每页大小 P_CURPAGE NUMBER, --当前页 P_WHERE VARCHAR2, --查询条件 P_ROWCOUNT OUT NUMBER, --总条数 P_PAGECOUNT OUT NUMBER, --总页数 P_CURSOR OUT FY_PAGE.CURSOR_PAGE ) --结果集IS COUNT_SQLVARCHAR2(2000); SELECT_SQLVARCHAR2(2000); start_numNUMBER; end_numNUMBER;BEGIN --查询总条数 COUNT_SQL:='SELECT COUNT(*) FROM '|| P_TABLENAME; IF P_WHERE IS NOT NULL THEN COUNT_SQL:= COUNT_SQL||' '|| P_WHERE; END IF; --执行 EXECUTE IMMEDIATE COUNT_SQLINTO P_ROWCOUNT; --总页数 IF MOD( P_ROWCOUNT, P_PAGESIZE)=0 THEN P_PAGECOUNT:= P_ROWCOUNT/ P_PAGESIZE; ELSE P_PAGECOUNT:= P_ROWCOUNT/ P_PAGESIZE+1; END IF; --当前页起始编号 start_num:=( P_CURPAGE-1)* P_PAGESIZE+1; --当前页结束编号 end_num:= P_CURPAGE* P_PAGESIZE; --结果集 SELECT_SQL := 'SELECT * FROM (SELECT '|| P_TABLENAME||'.*, ROW_NUMBER() OVER(ORDER BY '|| P_TABLECOLUMN|| ' '|| P_ORDER||') AID FROM '|| P_TABLENAME||' '|| P_WHERE||') A WHERE AID BETWEEN '|| start_num||' AND '|| end_num; OPEN P_CURSOR FOR SELECT_SQL;END PROC_FY;
2021年12月08日
212 阅读
0 评论
0 点赞
2021-12-08
触发器
什么是触发器?触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,不能被直接调用;触发器通常用于强制业务规则,优越于检查约束;触发器是一种高级约束,可以定义比CHECK约束更为复杂的约束----------------------------------------------------------------------------------------------------------------------------------触发器的分类DELETE 触发器INSERT 触发器UPDATE 触发器--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------创建触发器的语法:CREATE TRIGGER trigger_nameON table_name --指定一个表建立触发器FOR [DELETE,INSERT,UPDATE] --选择执行什么命令是触发AST-SQL语句(触发时要执行的代码)(根据不同的执行命令可以得到不同的表,表格类型与table_name一样)(SELECT * FROM INSERTED / SELECT * FROM DELETE / SELECT * FROM UPDATEED)
2021年12月08日
184 阅读
0 评论
0 点赞
2021-12-08
事务的特效及缺陷
事务的特性:ACID(1)原子性 Atomicity(2)一致性 Consistency(3)隔离性 Isolation(4)永久性 Durability原子性:事务必须是一个自动工作的单元,要么全部执行,要么全部不执行。一致性:事务结束的时候,所有的内部数据都是正确的。隔离性:并发多个事务时,各个事务不干涉内部数据,处理的都是其他事务处理之前或之后的数据。持久性:事务提交之后,数据是永久性的,不可再回滚。事务的缺陷:(1)脏读 用户A对表中某条数据进行修改了,但还没提交事务时,数据又被别的事务给改了。 脏数据--->"张三"被改成"李四"时,又来一事务读取,把"张三"读走了,但"张三"是要被改的。update bank set sname='李四' where sname='张三'(2)不可重复读(3)幻觉读 用户对数据产生怀疑,刚看到是张三,F5刷新一下变成李四了,用户会觉得是不是搞错了,这就是幻觉。(4)丢失更新 2个人同时在改一个数据,总有一个会被覆盖,谁先出手谁被覆盖。
2021年12月08日
229 阅读
0 评论
0 点赞
2021-12-08
分页原理 TOP/ROW_NUMBER()
SELECT TOP 10 * FROM STUINFO WHERE STUNO NOT IN(SELECT TOP (10*(当前显示页-1)) STUNO FROM STUINFO ORDER BY STUNO)SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY STUNO) CID FROM STUINFO) A WHERE CID BETWEEN 1 AND 10
2021年12月08日
169 阅读
0 评论
0 点赞
2021-12-08
SQL Server 数据库密码修改
首先登陆数据库,点开‘安全性’选择自己的数据库账户,双击然后在此修改密码,点击确认,密码就该了
2021年12月08日
128 阅读
0 评论
0 点赞
1
...
22
23
24
25