JSP cookie是存储在客户机的文本文件,保存了大量的轨迹信息。
通常有三个步骤可以识别回头客:
1)服务器脚本发送一系列cookie到浏览器,如姓名、年龄、ID等
2)浏览器在本地存储这些信息以备不时之需
3)下一次浏览器发送请求到服务器时,连同这些cookie信息一块发送给服务器,然后服务器使用这些信息来识别用户或者干别的事
cookie通常早HTTP请求头中设置
Set-Cookie:信息头中包含有键值对信息,一个GMT格林尼治时间,一个地址,一个域名
JSP中的request对象通过getCookies()方法获得cookie信息,返回一个cookie对象的数组

JSP设置cookie的三个步骤:
1)创建cookie对象: Cookie cookie = new Cookie("key","value")
2)设置有效期,单位时间为秒:cookie.setMaxAge(60*60*24*)//24小时
3)将cookie发送至HTTP响应头中:response.addCookie(cookie)

JSP session
JSP是一种无状态的协议,意味着用户每次检索网页时,就要单独打开一个服务链接,因此服务器不会记录下用户先前请求的任何信息,有三种方法维持客户端和服务器端的会话。
1)cookie:服务器可以为每一个客户建立一个唯一的session ID作为cookie代表每个客户端,但不是每个客户端的浏览器都支持cookie,不建议用这种方式维持会话
2)隐藏表单域:一个网络服务器可以发送一个隐藏的HTML表单和一个唯一的session ID;<input type="hiden" name="sessionid" value="123">,浏览器每发送一个请求,sessionid
就可以保存为不同浏览器的轨迹信息,隐藏表单不支持通用会话跟踪
3)session对象:jsp利用servlet提供的HttpSession接口来识别一个用户,存储这个用户所有的访问信息

删除session数据:
移除一个特定的属性:public void removeAttribute(String name)
整个session无效:public void invalidate()
设置会话超时:public void setMaxInactiveInterval(int interval)
配置web.xml文件:如果使用的是tomcat,可以这样配置部署描述符文件web.xml
<session-config>
<session-timeout>15</session-timeout>
</session-config>
超时以分钟为单位,tomcat中的默认超时时间为30分钟

JSP文件上传
JSP和HTML form共同使用,实现文件的上传任务,上传的可以是文本、图片和任何文档
步骤:上传表单--上传处理servlet--上传跳转
三个文件:
upload.jsp:上传表单
UploadServlet:上传处理servlet
message.jsp:上传成功后跳转页面
最主要的是处理请求的servlet
UploadServle.java
import ...

/**
* Servlet implements class UploadServlet
*/
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// 上传文件存储目录
private static final String UPLOAD_DIRECTORY = "upload";
// 上传配置
private static final int MEMEORY_THRESHOLD = 1024 * 1024 * 4; //4MB
private static final int MAX_FILE_SIEZ = 1024 * 1024 * 40; //40MB
private static final int MAX_REQUEST_SIEZ = 1024 * 1024 * 40; //50MB

// 上传配置及保存文件
protected void doPost(HttpServletRequest request, HttpServletResponse response)rhrows ServletException, IOException{
// 检测是否为多媒体上传
if(!ServletFileUpload.isMultipartContent(request)){
// 如果不是停止上传
PrintWriter writer = response.getWriter();
writer.println("错误!表单提交的格式内容必须为enctype='multipart/form-data'");
writer.flush();
return;
}
// 配置上传参数
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存临界值,超出后则自动存储在临时目录中
factory.setSizeThreshold(MEMEORY_THRESHOLD);
// 设置临时存储目录
factory.setRepository(new File(System.setProperty("java.io.tempdir")));
//
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置最大文件上传值
upload.setFileSizeMax(MAX_FILE_SIEZ);
// 设置最大请求值
upload.setSizeMax(MAX_REQUEST_SIEZ);
// 中文处理
upload.serHeaderEncoding("UTF-8");
// 构造临时路径存储上传的文件,相对当前应用的目录
String uploadPath = getServletContext.getRealPath("./") + File.separator + UPLOAD_DIRECTORY;
// 如果目录不存在,则创建目录
File uploadDir = new File(uploadPath);
if(!uploadDir.exists()){
uploadDir.mkdir();
}

try{
// 解析请求的内容,提取文件数据
List<FileItem> formItems = upload.paraRequest(request);
if(formItems != null && formItems.size() > 0){
// 迭代表单数据
for(FileItem item : formItems){
// 处理不在表单中的数据
if(!item.isFormField()){
String fileName = new File(item.getName()).getName();
String filePath = uploadPath+File.separator+fileName;
File storeFile = new File(filePath);
// 控制台输出上传路径名
System.out.println(filePath);
// 保存文件到硬盘
item.write(storeFile);
request.setAttribute("message","上传成功");
}
}
}
}catch(Exception e){
requset.setAttribute("message","上传失败"+e.getMessage());
}
// 跳转到message.jsp;
getServletContext().getRequestDispatcher("message.jsp").forward(request,response);
}
}

<%= %>只能得到当前面定义的值
即你在这个页里有<% int a=100%>
你在下面才可以使用<%=a%>
${ }这个是el表达式(表达式语言)
可以从上下文中得到值。

JSP页面重定向
要将文档移动到一个新的位置时,就需要重定向,使用response对象的sendRedirector()方法
方法签名:
public void response.sendRedirector(String location) throws IOException{}
这个方法将状态码和新的网页位置作为响应发回给浏览器

JSP学习_01的更多相关文章

  1. JSP学习网站

    JSP学习网站 http://www.yiibai.com/jstl/ http://www.w3cschool.cc/jsp/jsp-jstl.html

  2. JSP学习笔记

    JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...

  3. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  4. JSP 学习二

    在基于昨天对JSP学习的基础上,今天我们来学习JSP的指令和JSP 对中文的处理. 一.JSP指令简介 JSP 指令是为JSP引擎而设计,它并不直接产生任何可见的输出,而只是告诉引擎如何处理JSP页面 ...

  5. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象

     JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...

  6. C++基础学习_01

    C++基础学习_01 基础知识:1.命名空间,2.IO流(输入输入),3.参数缺省,4.函数重载 1.命名空间 作用:对标识符的名称进行本地化,避免命名冲突 定义:namaspace space_na ...

  7. (转) jsp学习笔记

    fromhttp://www.cnblogs.com/tao975/p/4445070.html 什么是JSP JSP的优势 JSP的劣势 JSP与PHP的比较 JSP工作原理 JSP的九大内置对象 ...

  8. jsp学习:jsp学习阶段性总结2019.9.21

    Jsp学习 jsp语法格式: 脚本程序:<% 代码片段 %> jsp声明:<%! declaration; [ declaration; ]+ ... %> 表达式:<% ...

  9. JSP学习(1)

    JSP学习(1) 什么是Web应用程序 可以Web访问呢的应用程序,用户只需要浏览器即可访问 静态网页与动态网页 静态网页:网页中内容固定 动态网页:内容通过程序动态显示,自动更新 Java Web应 ...

随机推荐

  1. Layui:设置select下拉框自动选中某项

    1.问题:layUI,在做编辑功能有下拉框数据时,需要初始化选中某个值,layUI官网没有相关api,可能我比较笨没找到 2.解决思路:出发点击事件 3.分析dom树结构,出发dl点击事件 方法: v ...

  2. SPREAD for Windows Forms 控制输入法

    enc = System.Text.Encoding.GetEncoding("shift-jis") datamodel = CType(FpSpread1.ActiveShee ...

  3. matlab矩阵内存预分配

    matlab矩阵内存预分配就意味着,划定一个固定的内存块,各数据可直接按"行.列指数"存放到对应的元素中.若矩阵中不预配置内存.则随着"行.列指数"的变大.MA ...

  4. ssh跟ssm的区别

    SSH跟SSM的区别 SSH指的是:spring+Struts+hibernate:而SSM指的是:spring +SpringMVC + MyBatis. 1.Spring是是开源框架,是轻量级的I ...

  5. iOS 播放gif动态图的方式探讨

    原文链接:http://my.oschina.net/u/2340880/blog/608560 摘要iOS中没有现成的接口来展示gif动态图,但可以通过其他的方式来处理gif图的展示.iOS中播放g ...

  6. OpenGL 知识二

    OpenGL综述 September 14, 2014 学习OpenGL是学习计算机图形学的一个工具,因为计算机上图形的显示要依靠底层的软件和硬件,学习图形学除了学习基本的概念,线,曲面,图形生成,变 ...

  7. VS2017编译Poco1.9.0的64版本

    需要先准备好OpenSSL1.0.2 下载poco-poco-1.9.0-release.zip,解压,修改buildwin.cmd中的OPENSSL_DIR路径,特别注意OPENSSL_LIB的路径 ...

  8. spring applicationContext.xml 配置文件 详解

      <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://ww ...

  9. 【Spring Boot&&Spring Cloud系列】使用Intellij构建Spring Boot和Mybatis项目

    一.创建项目 1.File->New->Project->spring initializer 2.勾选Web SQL Template Engines 3.项目生成之后,点击add ...

  10. css案例 - 评分效果的星星✨外衣

    纳尼?什么星星外衣?好,直接上图比较能说清楚: 仔细看会发现规律:可以根据百分比/分值动态改变高亮星星的个数. 分步骤图: 这种效果,如果遇到一分一个星,没有半星(或者有也可以,直接加一个半星的类名) ...