JSp基础知识
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> 需要的三个包: <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="js/bootstrap.min.js"></script> <link href="css/bootstrap.min.css" rel="stylesheet"> jsp的环境搭建:需要tomcat web程序 什么是静态网页和什么是动态网页 需要html css 数据库 和高级语言 java c# js jquery xml 文档技术 环境开发 jdk tomcat服务器介绍: web服务器 可以解析html css jsp和servlet容器 web结构: bin,conf lib logs temp webapps work(把jsp生成的servlet放在目录下) 手写web 创建一个项目目录my.jsp, 然后创建一个WEB_INF文件夹然后在改文件下创建一个class文件夹 和一个lib文件夹 以及以个web.xml文件 然后测试运行 WEB-INF详解 javaweb的、一个安全资源 用户不可以访问 web.xml <welcome-file-list>haha.jsp</welcome-file-list>修改了web.xml需要重启文档 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ javaweb虚拟路径 项目名称就可以称之为虚拟路劲 修改虚拟路径 在首选项的web选项 修改默认编码 在web选项 ················ 修改tomcat默认端口号 在tomcat conf/servlet.xml 8080端口 timeout=20000 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ JSP简介 JAVA SERVER PAGES 动态开发技术 JSP元素构成 JSP生命周期 JAVA平台,安全性高,适合开发大型 ASP相反 PHP LAMP ~~~~~~~~~~~~~~~~ jsp指令 静态内容 注释 声明 小脚本 表达式 】 JSP三种指令 page位于JSP顶端<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> include指令 可以将一个web文件嵌入 可以解析JSP Taglib指令: 指令 JSP注释可看见 JSP生命周期: 用户发出请求 服务器接受用户请求, 会判断是否为第一次 如果是第一次会转换为servlet (也是椅个java类,)在编译时候运行 值执行一次,然后解析jspService()方法 jsp也是常住内存,可以访问速度很快。 用户请求一次就是椅个线程,也可以多线程,但是多线程有临界的危险 -------------------------- JSP内置对象 内置对象介绍 四中作用范围 out request /respongse seeion application 其他对象 项目案例 ~~~~~~内置对象不需要被new 例如OUT。print()不需要被new 九大内置对象 不常用的有 page pageContext exception config ~~~~~~~~~~~~~~~~~~~~~~~~~~ 什么是缓冲区? 缓冲区:Buffer,所谓缓冲区就是内存的一块区域用来保存临时数据 JSP内置对象中的out 他是JSPWerite类的实例 想客户端打印 clear()清除缓冲区,但是在flush()之前调用会跑出异常 clearBuffer 区别就是不会跑出异常 flush()讲缓冲区的字节大小输出 getRemaining 范湖缓冲区还有多少剩余空间 isAutoFlush是自动刷新缓冲区 close()是关闭 getBufferSize()获得字节大小 在这里需要注意的是在flush()方法之后调用clear()方法会跑出异常, 但是clearBuffer()不会 ----------------------- get/post request对象 HttpServletRequest类的实例 String getParamter(String name)请求乱码 String[] getParamterValue(数组) 解决乱码:tomcat提交表单默认的是ISO-8859-1 解决方法一:要跟用户注册的字符集一样 <% request.setCharacterEndciond(“utf-8”); %> 通过Url请求乱码 使用上面无法解决 需要需要servlet配置文档conf/servler 文件下的web.xml 在修改端口的末尾加上URIEncoding="utf-8" ~~~~~~~~~~~~~~~~(快速个格式化代码 ctrl+shift+f) 代码演示 <form action="login.jsp" method="get"> <input type="text" value="请输入用户" name="username"> <br/> 爱好: <input type="checkbox" name="habit" value="篮球">篮球 <input type="checkbox" name="babit" value="足球">足球 <input type="checkbox" name="habit" value="羽毛球">羽毛球 <br/> 性别: <input type="radio" value="男" name="sex">男 <input type="radio" value="女" name="sex">女 <input type="submit" value="提交"> ~~~~~~~~~~~~~~~~~~~~~~~~~ <a href="login.jsp?sex=aaaa">超链</a> </form> login.jsp代码实现 <% request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username"); out.print("用户名:"+username); String[] arr = request.getParameterValues("habit"); String sex = request.getParameter("sex"); if (arr != null) { for (int i = 0; i < arr.length; i++) { out.print("兴趣爱好:"+arr[i] + " "); } } out.print("性别:"+request.getParameter("sex")); %> 存储属性 request setArrtibute("password","123456"); getArrtibute("pass"); getContentType() MIME协议的类号 getProtocol()返回请求用协议类型及版本号 getServName()返回接受请求的服务器主机名 getServerPort() get字符编码 get文件长度(单位是字节)getContentLength() getIP地址 getRemoteAddr() 获得真实路径 getRealPath() 获得请求上下文路径getContexttPath() ----------------------- response对象 很少直接使用到 访问页面 只对当前页面有效,其他页面无效 response方法 getCharacterEncoding()返回字符集 setContentType(String type) MIME类 getWrite() 可以向浏览器输出 和out对对象有区别 输出流总是首先打印 sendRedirect()重定向 请求转发和请求重定向的区别 首先重定向是respong对象, 有两次请求, URI会发生相应的改变 request.getRequestDispatcher().forward(req,resp);只请求一次, URI不会改变 --------------------- Session 什么是Session? 表示客户端与服务器的一次对话,从访问网站和关闭网站时间 就是一次会话 实例:京东,天猫 用户登陆,浏览商品界面, 下单, 确认订单, 属于一次会话,Session 保存在服务器中 不同用户保存不同的、Session Session是HttpSession的实例 getCreateTime() 创建时间 getId() JSP引擎唯一的ID setAttribute(String name,Object value); 在其他页面了可以调用getAttribute()获得值 String [] getValueNames() 返回Session可用数组 getMaxInactiveInterval() 返回请求会话最大时间,同样可用设置时间 使用set方法 -------------- 生命周期 只要浏览器一关闭这个Session会话就结束, 但是会话没有被销毁,还存在,只是这个时候 客户端没法和服务端进行校验了, getId()不同了 销毁会话有三种方式: 服务器重启,调用session.ivalidate() Session过期 超时时间 默认为30分钟 还有一种方法修改超时时间项目的web.xml <session-config> <session-timeout>1<session-timeout> <session-config> -------- application对象 实现了用户间的数据的共享, 可存放全局变量 开始于服务器的启动, 终止服务器的关闭 在用户、的前后的链接或不同用户之间的链接中 , 可以对application对象同意属性进行操作 服务器的启动和关闭决定了application的生命 application对象ServerContext的实例 方法常用有三个 设置属性 和获取属性 以及获取引擎版本号 Page对象 Content config初始化信息 exception对象 需要isErrorPage=true errorPage=“error.jsp” 方法 getMessage() toSring() printStackTrace() Fill异常 javaBean 简介 设计原则 如何使用 userBean getProperty set java四个作用范围 设计原则: 必须共有 必须有构造函数 属性私有 用get 和set调用
初入江湖程序猿