首页 > 软件开发 > Java Web开发之详解JSP

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

Java Web开发之详解JSP

标签:Java Web开发之详解JSP 2017-8-18 作者:open_tq54_niwe

  JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面。Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用,而JavaBean作为模型(Model)层使用。这就是经典的MVC模型。


  Servlet和JSP的关系上篇博客已经讲过了,并演示了一个相当简单的例子。在具体讲述JSP之前,先把JavaBean简单介绍一下。


  JavaBean其实就是一个Java普通类,定义了类的属性和行为(get、set方法)。在MVC设计模式当中,并没有提及数据库交互操作,其实就是通过JavaBean实现具体的数据库操作的。至于为什么叫JavaBean,据说还有一个故事。Java之父在一次喝咖啡的时候看到桌子上的咖啡豆,突发奇想就给起了个JavaBean的名字(Bean是豆子的意思)。


  提到MVC,顺便说一下三层(分层、多层)架构,很多人搞不清之间的关系,感觉MVC与三层架构非常相似,认为它们没有什么太大的区别。其实用一句话概括,MVC是设计模式,而三层架构是分层模型。MVC包含模型-控制器-视图,注意这里没有“层”,它强调的是将开发代码分为这几个部分,通过这种模型来实现应用程序的开发。MVC也不是Web开发的专属,其实在早期的C/S开发中已经用到了MVC设计模式。而三层架构指的是DAL(数据访问层)、BLL(业务逻辑层)、UI(用户界面层),它强调的是程序开发的结构。


  理清上面的关系,利用Java语言就可以处理后台所有相关的操作,而使用JSP就可以处理前台页面所有相关的操作。


  一、JSP基本元素


  一个JSP包含以下基本元素:


  1、html部分


  就是指JSP(java Server Pages,Java服务端页面)页面的静态部分。


  2、指令


  主要有如下3种指令:


  page指令(每个JSP页面都需要有,设置页面编码,导入需要jar包都需要page指令):<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


  taglib指令(导入JSTL或者自定义标签时使用):<%@taglib uri="//java.sun.com/jsp/jstl/core" prefix="c"%>


  include指令(包含页面):<%@include file="test.jsp" %>


  3、表达式


  <%=方法(参数...)%>


  [html] view plain copy


  <%=getTime() %>


  4、脚本段(scriptlet)


  格式:<%...%>。比如:


  [html] view plain copy


  <% Calendar c = Calendar.getInstance(); %>


  <%if (c.get(Calendar.AM_PM) == Calendar.AM) {%>


  上午


  <%} else {%>


  下午


  <%}%>


  5、声明


  格式:<%!...%> 比如:


  [html] view plain copy


  <%!public String getTime(){


  return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());


  } %>


  6、动作


  使用JavaBean:


  获取属性:


  设置属性:


  页面包含:


  页面跳转:


  ...


  7、注释


  分两种注释:


  a、


  b、<%--客户端看不到的注释%>


  基本上上面的这7个元素,稍微复杂一点的jsp页面都会包括。这里特别提及一下,include指令和include动作的区别,两者都可以在主页面中引入别的页面,达到嵌入页面的目的。主要区别在于include指令会影响主jsp页面的构造,对主页面定义的变量会有影响,本质上是跟主页面编译为一个新的页面,因此页面执行效率更高。而include动作是将新的页面嵌入到主页面当中,在执行时会先加载主jsp页面,再加载include动作嵌入的页面,执行效率比include指令低一点,但是这是更灵活的选择。实际开发中,使用include动作更多一点。


  二、JSP隐式对象


  隐式对象的含义就是指不需要显式new一个类的对象的对象,可以在JSP页面直接使用。主要有四类:


  1、输入输出对象:request、response、out


  request.getParameter("name");


  request.getParameterValues("name");


  response.setContentType("text/html;charset=gbk");


  response.sendRedirect("url");


  out.println("...");


  2、作用域对象:pageContext、request、session、appplication


  pageContext.getAttribute("name");


  pageContext.setAttribute("name","value");


  request.getAttribute("name","value");


  request.setAttribute("name","value");


  session.getAttribute("name");


  session.setAttribute("name","value");


  application.getAttribute("name");


  application.setAttribute("name","value");


  作用域对象的生命周期:pageContext(页面)


  3、Servlet对象:page、config


  ((HttpJspPage)page).getServletInfo();


  config.getInitParameter("name");


  4、错误对象:exception


  exception.printStackTrace(out);


  三、EL表达式(表达式语言)


  虽然能够通过表达式在JSP页面嵌入Java代码实现结果输出,但是这并不是最好的开发方式。从开发角度来讲,前台JSP页面应该不出现Java代码(Java代码应该在后台出现)。为了解决这个问题,推出了JSP表达式语言。


  语法:${...} 。


  举个简单点的例子:


  [html] view plain copy


  


  


  ${bean.name}   or    ${bean["name"]}


  通过jsp的useBean动作使用了某个JavaBean,再通过setProperty动作给name属性赋值,最后通过${bean.name}或者${bean["name"]}输出:测试EL。


  再比如form表单提交:


  我们可以使用<%=request.getParameter("name") %>输出结果,但是更好的方式是通过${param.name}来输出。由于该作用域为page,所以也可以通过${pageScope.bean.name}EL隐式对象输出。从作用域从小到大排序其它还有requestScope、sessionScope、applicationScope等各种EL隐式对象(区别于JSP隐式对象)。


  此外,EL表达式还有运算功能,比如:


  [html] view plain copy


  ${10+1.0}


  ${90E2-120}


  ${23.8*7}


  ${1/0}


  ${10 div 5}


  ${10%4}


  ${10 mod 4}


  ${10*10 eq 100}


  ${'c' gt 'b'}


  ${9 le 8}


  四、JSTL(Java标准标签库)


  JSTL也是JSP页面中使用的技术,这套标签库设置的目的就是在JSP页面中面对一些判断(条件标签:if)、循环(迭代标签:foreach)、数据库操作(SQL标签库:update、param、query等)操作的时候,总不可避免的要嵌入Java代码,而使用这些标签则让JSP页面代码“清爽”了许多。除了上面的这些标签之外,还有一些通用标签,比如:set、remove、out等。


  使用JSTL,首先要使用taglib指令,导入JSTL。


  [html] view plain copy


  <%@taglib uri="//java.sun.com/jsp/jstl/core" prefix="c"%>


  导入之后就可以在JSP页面中使用JSTL了。


  下面用JSTL将上面的输出“上午/下午”的嵌入Java代码的例子,改用JSTL实现。


  [html] view plain copy


  


  


  


  


  


  


  


  


  


  除了value里面的代码是Java代码之外(这里为了简单演示没有将Java代码存放到后台代码中去),再也看不到Java的身影了,取而代之的是JSTL。


  再看看foreach标签如何使用。


  [html] view plain copy


  <%


  String[] colors = new String[] { "red", "green", "yellow", "black","silver" };


  pageContext.setAttribute("colors", colors);


  %>


  


  


  


  


  


  将一个String数组存放到了pageContext(JSP作用域对象)当中,然后通过JSTL结合EL表达式pageScope(EL作用域对象)取出并循环输出。


  JSTL还提供了SQL标签库,由于我们开发一般都会在后台封装这部分代码,所以基本上用不着,这里也就不再演示。


  本篇博客主要回顾了JSP开发过程中的很多基础性的细节知识,熟练掌握以上知识就能够进行Java Web开发了。当然随着项目规模的越来越大,单纯的JSP开发也不能够胜任,需要引入开发框架。著名的struts、hibernate、spring等框架我会在以后再介绍。


  上面就是小编为大家整理的关于web开发详解的文章,希望对大家有帮助。在实际的操作过程中大家可以根据实际情况进行灵活的调整。了解更多咨询请关注猪八戒网。


最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才