Jsp简单介绍

一、jsp第一行pageEncoding改为utf-8

	<%      %>中间放置Java脚本
	jsp声明<%! JAVA代码 %>
	jsp表达式<%=表达式或变量%>
	jsp文件的头部使用样式为
	<%@ page language="java" %>
	<%@ page contentType="text/html; charset=GB2312"%>
	JSP三种命令指令分别是page、include、taglib
	(1)page指令
	功能:设定整个JSP网页的静态属性。
	(2)include指令
	功能:include指令用来向当前页面插入一个静态文件的内容。这个文件可以是JSP、HTML、文本或是Java程序。
	(3)taglib指令
	功能:使用标签库定义新的自定义标签,在JSP页面中启用定制行为。

	1.tomcat服务器的安装及使用
	           http://127.0.0.1:8080/ssss/index.html
	           http://localhost:8080/ssss/index.html两者等价
	           webapps 发布路径(tomcat7.0-conf-server.xml)
	           myeclipse设置
	                   1.tomcat属性
	                   2.发布路径(一般情况下不用设置)
	                   3.servers窗口
	                   4.自定义运行参数 (在工程上右击-run as-run configurations-myeclipse server application双击-选择服务器等)
	
	2.jsp页面/web.xml设置
	         @page   @include  @taglib
		 jsp:include 包含 jsp:forward 转向
		 jsp内置对象(和servlet中对象的对应关系)                                      
		      1.request  浏览器请求(地址/参数/头部/客户机信息)(req)
	              2.response  回应(指定编码,内容类型,内容)到浏览器  (resp)
		      3.out 插入当前输出 write("");(resp.getWriter)
		      4.congfig 获取web.xml里,当前页的初始参数(getServletConfig().getInitParameter(name)//获取当前的配置文件                                                                                       getServletContext().getInitParameter(name))//获取全局的配置文件  
		      5.session  服务器会话变量map集合(request.getSession)
		      6.application 服务器全局变量map集合,获取web.xml里,当前程序的初始参数。而不是当前页的初始参数(getServletContext().setAttribute)
		      7.pagecontext 页上下文 包含和该页相关所有内容(getServletContext())
		      8.page (this)
		      9.exception 编译指令page 的isErrorPage 属性为true时,该对象才可以使用
		 el表达式 不能放到动态脚本中使用
		      1.便捷取值(el对象的值/jsp对象的值)
		      2.不能执行方法
		      3.在jsp页面都有效
		      4.${erer.er}
		 用户值  (常用 request param session)  scope指的是范围
		      1.页变量pageScope  <%=val%>
		         jstl set标签  ${pageScope.val}
		      2.请求参数  连接url参数/form标签 录入控件的name和value属性
		                  两种方式   1.request.getParameter(name)
				             2.${param.name}
		      3.request值栈   有效范围:目标界面
		                  request.setAttribute("key","val") 值栈设置
				  request.getAttribute("key")  值栈获取
		      4.session值栈    有效范围:当前连接会话
		                      session.setAttribute(name,value);
		                  或HttpSession sessions=request.getSession();
				  sessions.setAttribute("key","val");
				  sessions.getAttribute("key");
	              5.application值栈  有效范围:当前web应用/全局
	                          application.setAttribute(name,object);
	                          application.getAttribute(name,object);
	              6.cookit客户端值   存放在客户端
		                  Cookie[] cs= request.getCookies();//cookie的获取
				  response.addCookie(cookie);//cookie的设置
	
	3.jsp标签库  jstl标签库/el表达式
		     JSTL标签库(java通用标签库  替换掉所有动态脚本) prefix(别名 随便起)
	                  核心库 逻辑语句/赋值/输出
			  <c:if test="${name==null}"></c:if>
			  <c:set var="name" value="${param.name}"></c:set>
			  <c:out value='${name}'></c:out>
			  循环语句
	                     <c:forEach var="row" items="${sessionScope.rs.rows }" varStatus="s">
			     <c:out value="${s.count}"></c:out><c:out value="${row.name}"></c:out><br>
			     </c:forEach>
		     sql库
		          sql:setDataSource
			  sql: query
	     
	          例子
		          index.jsp 文件中的问题
	                 1.jsp嵌入式 循环显示前端脚本
			   <td><%=rs.getInt(1)%></td>
			   out.write("<td>"+rs.getInt(1)+"</td>");
			 2.url拼接
			   <a href="a.jsp?cmd=page&page=<%=pro%>">
	                 3.分页显示
			   定义页号变量,在翻页时都能访问 通过页号计算 first行 max行
	                     1.通过session
			     2.通过url param
			     3.sql limit 分页查询
			 4.使用sqlHelper类
	
			   edit.jsp
	                 1.新增修改使用同一个jsp页(修改时有id)
			 2.使用<input type="hidden" name="cmd" value="add"> //cmd id
			 3.使用<from action="a.jsp" method="post">  //post/get区别
	                   a.jsp实际应写成 room.jsp(表是room表)
	                 1.将单个表的数据管理放置在一起
			 2.加入cmd标识参数,区别各类操作
			 3.中文转码  name=new String(name.getBytes("ISO-8859-1"),"utf-8");
	                 4.重定向  response.sendRedirect("index.jsp");
	                 5.前端数据到后端只有提交服务器
			   后端数据到前端,动态脚本/el嵌入  (后端数据可以轻易插入到前端,而前端数据必须经过提交、换页、回来才能把数据插入到后端)
	
	  4.servlet   (实质上和*.jsp文件是一样的)
	              servlet
			   1. 创建  class 继承 HttpServlet
	                   2. 实现 doget dopost 把super.doget() 移除
			   3. 注册到 web.xml
	 
	              重定向
		            1.response.sendRedirect("index.jsp?name=11");//url重定向(地址栏中的路径会改变) 不携带数据
			    2.携带全部数据转发指定页
			       RequestDispatcher  r=req.getRequestDispatcher("index.jsp");)//定义
			       r.include(req,resp);//转向方法一 包含指定页输出  (地址栏中的路径不会改变)
			       r.forward(req,resp);//    方法二 只显示指定页输出
	             
		     session 存放在服务器
		             sessionID
			     session跟踪
			         1.url跟踪    index.jsp:jsessionid=1234
				 2.cookie跟踪
		        属性:    
	                     setMaxInactiveInterval   设置会话周期
	                     setAttribute
			     getAttribute
			     removeAttribute
	            
	             cookie 存放在客户端浏览器缓存里
	                    resp.addCookie(new Cookie("name",name));
		            1.可设置路径范围
			    2.Cookie c= new Cookie("name",name) //自创建开始计时秒数,自动删除
			        c.setMaxAge(10);
			    3.获取req.getCookies() 只能通过循环遍历查询
			    4.可在前端直接调用
	           
	         前端发向后端 提交
	                        1.url重定向  url拼装 只支持get
	                              (1)<a href> html重定向
	                                     换页,不需额外处理立即换页
	                                     list,jsp?pageno=<%=page%>拼装
	                               (2)location href="",reload() js重定向
	                                   经onclick事件,执行js方法,处理之后换页
	                                   location.href="list.jsp?pageno="+page;
	                        2.form标签提交  表单提交(新增/修改,对用户录入的数据提交)
	                                         支持post,支持文件,url安全,数据量大
	                                        hidden,可加入非显示的父带数据(id,cmd)
	                        3.ajax提交  json串提交/返回
	                              (1)提交校验信息(密码,用户名存在)
	                              (2)非换页的得到数据,使用js填充数据
	                              (3)js富客户端框架(ext js/jQueryUI)   
	
	         后端发向前端
		             1.使用HttpServletResponse getWriter() 直接输出html(不推荐)
			     2.将输出数据的值加入值栈,重定向到jsp页面作为模板,使用el嵌入数据
			     3.ajax,json获取,使用HttpServletResponse getWriter()直接输出 json 字符串
	        
	           过程      
	                   1.前端脚本发出请求(url,form,ajax)发给web服务器
	                   2.web服务查询web,xml,查找 class
	                                    没找到:1.找jsp页面,编译成servlet 类
	                                            2.404错误
	                                    找到:执行servlet类 输入请求信息
	                   3.类(class)解析获取请求内的信息
	                   4.根据请求信息查询数据库/其他的处理
	                   5.返回查询/处理的结果
	                                   1.数据集 将数据集转为list<对象>,放入值栈,采用req.getRequestDispatcher,指定模板页转向                                                 2.标志   将数据直接放入值栈
	                                   3.图像/文件  使用getoutputstream写入流
	                                   4.json   使用getWriter写入字符
	                                   5.html   使用getWriter写入字符
	                                   6.后端数据的显示
	                                          1.数据集    使用jstl,el嵌入html
	                                          2.标志      使用el嵌入html标签中
	                                          3.图像       <img src="pic"/>
	                                          4.json      $.getJSON       $.ajax
	                                          5.html      什么也不做
	                                   7.将执行的结果(是静态页面),发送到客户端浏览器(浏览器不能执行动态脚本)
	                                   8.浏览器解析html,显示页面信息
	
	             jsp:1.jstl  逻辑语句
	                  2.el    取值
	                  3.servlet/jsp 后端页面  servlet必须注册到web.xml 
	                 4.filter   (拦截请求)引用接口  必须注册到web.xml 
	                 5.listener (服务启动状态监听)引用接口    必须注册到web.xml 
	                  
	
	     mvc是开发模式 来完成 jsp页面
	            m:model模型   v:view视图  c:controller控制器
	     引申:mvp   p:presente 
	
	     数据管理3层  bll dao >>model
	                  model view controller(biz,service,bll)
	5.listener/filter		
	乱码问题:1.当前页面编码方式
	          2.请求的编码(1.url请求的编码 2.tomcat内部接收数据的编码 3.数据库编码(my.ini编码、建表编码))
	          3.返回请求时的restore编码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值