发布于2021-05-29 21:32 阅读(1568) 评论(0) 点赞(27) 收藏(2)
动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。
使用Servlet通过字符串拼接的方式输出静态网页是一件十分痛苦的事情,为了弥补Servlet的这种缺陷,SUN公司在Servlet的基础上推出了jsp(Java Server Pages)技术。
jsp是简化Servlet编写的一种技术,它可以让Java代码和HTML语句混合在同一个文件中编写
jsp的本质是一个Servlet。
sevlet
response.getWriter().print("页面")
方式生成HTML页面特别繁琐和复杂jsp
tomcat会把jsp文件,先翻译成.java文件,再编译成.class文件,最后运行的是这个.class文件。整个的过程,在idea虚拟目录中的work目录中完成。
我们编写的jsp编译成的.class继承了HttpJspBase,而HttpJspBase继承了HttpServlet,所以说jsp本质就是一个Servlet。
Jsp通过脚本方式来定义java代码,脚本就是JSP中用来书写java代码的部分,主要有三种写法:
脚本片段
语法: <% Java代码 %>
作用:编写逻辑Java代码,这里面编写的代码, 编译之后会直接出现在servlet的service()方法中
脚本声明
语法: <%! java代码 %>
作用:声明全局变量和方法,这里面编写的代码,编译之后会出现在servlet的成员变量位置
脚本表达式
语法:<%= java代码 %>
作用: 向页面输出字符,这里面编写的代码, 编译之后会直接出现在servlet的service()方法中的out.print("")内
<%-- 注释内容 --%>`
注释html代码和java代码脚本
注释作用范围:
注释 | jsp源码 | java源码 | html源码 |
---|---|---|---|
html注释 | 可见 | 可见 | 可见 |
java注释 | 可见 | 可见 | 不可见 |
jsp注释 | 可见 | 不可见 | 不可见 |
隐式对象:在jsp中已经声明好了(_jspService定义好的变量),可以直接在页面上使用的对象。
隐式对象特点
PageContext是javax.servlet.jsp.JspContext的子类,也在javax.servlet.jsp包下;它可以获取其他8个隐式对象,同时它也是一个域对象,称为页面域。
页面域作用范围:就在当前页面,出了当前页面就用不了了。
PageContext不仅可以操作页面域,还可以操作其他三个域。
jsp嵌套java代码,使用脚本元素 ,太复杂现在已经淘汰,所以现在在JSP中不允许出现Java代码。
现在我们使用表达式语言(Expression Language),主要用来简化jsp中对java代码的操作。
EL可以从jsp的域对象中获取数据,还可以执行一些简单的计算。
语法: ${表达式}
${pageScope.键名}
从page域中获取指定键名对应的值${requestScope.键名}
从request域中获取指定键名对应的值${sessionScope.键名}
从session域中获取指定键名对应的值${applicationScope.键名}
从application域中获取指定键名对应的值${键名}
:从最小域到最大域依次查找,若找到,立即返回且终止查找;若没有找到,返回""
细节:
往域中放入的数据的时候,尽量不要在属性名中使用.
和数字
//引用数据类型 string int
request.setAttribute("str" , "第一个存入的字符串" );
request.setAttribute("num" , 123.123 );
//2.存数组
String [] arr={"jack" , "rose" , "tom" , "jerry"};
request.setAttribute("arr" , arr );
//3.存对象(javaBean)
request.setAttribute("user" , new User("小明","1234" , 18));
//4.list集合
List<String> strList = new ArrayList();
strList.add("我");
strList.add("爱");
strList.add("Java");
request.setAttribute("strList" , strList);
//5.map集合
Map<String , String > map = new HashMap<>();
map.put("key1" , "value1");
map.put("key2" , "value2");
map.put("key3" , "value3");
map.put("key4" , "value4");
request.setAttribute("map" , map);
<h1>演示获得字符串数据</h1>
${str}<br/>
${num}<br/>
<h1>演示获得数组</h1>
<%--${数组[索引]}--%>
${arr}${arr[1]}
<h1>演示获得对象</h1>
<%--${对象.去掉get首字母小写}--%>
${user.username2}
<h1>演示获得list</h1>
<%--${集合[索引]}--%>
${strList}${strList[1]}
<h1>演示获得map集合</h1>
<%--${map集合['key']} map.get("key")--%>
${map['key1']}
Jsp 标准标签库(Jsp Standard Tag Library),是由Apache组织提供的开源的jsp标签库,本质是含一定逻辑的标签,作用是在页面做判断和循环操作。
JSTL标准标签库有5个子库,但随着发展,目前常使用的是它的核心库 core
标签库 | 标签库的URI | 前缀 |
---|---|---|
Core | http://java.sun.com/jsp/jstl/core | c |
if(条件){}
的用法,它的常见用法:<c:if test=“条件”>
条件成立的逻辑
</c:if>
begin:循环的开始,默认为0
end: 循环的结束,默认为items的length
var: 循环过程中的临时变量
step: 设置步长 ,默认为1
items:指定要循环的对象,支持el表达式,可以从四大域中获取集合
varStatus:遍历的状态count:表示当前遍历的是第几个,从1开始
index:表示当前遍历的索引,从0开始
javax.servlet.jsp.jstl.jar
包和jstl-impl.jar
包<%@taglib prefix="标签前缀" uri="标签库的uri"%>
导入标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想。
- M: Model(模型),除了servlet之外其他的实体类用来处理业务逻辑或者封装数据
- V: View(视图),目前jsp就是视图,用于展示数据的,擅长展示动态内容
- C: Controller(控制器),目前servlet就是控制器,用于接收和响应来自客户端的请求
MVC优点:
MVC缺点:
三层架构是对mvc模式的一种细化,它将Model进一步分为service层和dao层,以后在开发中都会遵循三层架构。
每一个项目的第一层基础包是公司域名倒写,如com.baidu
com.baidu 公司域名倒写
com.baidu.web web层的内容
com.baidu.service service层代码(业务逻辑层)
com.baidu.dao 数据库访问层
com.baidu.domain 存放实体类
com.baidu.utils 存放工具类: 不需要new 也能使用的类 存放一些静态方法
复杂的层次结构:
com.baidu 公司域名倒写
com.baidu.项目名称 公司域名倒写
com.baidu.项目名称.web web层的内容
com.baidu.项目名称.web.servlet web层的内容
com.baidu.项目名称.web.filter web层的内容
com.baidu.项目名称.web.listener web层的内容
com.baidu.项目名称.service service的接口层
com.baidu.项目名称.service.impl service的实现类层
com.baidu.项目名称.dao 数据库访问层 , 接口层
com.baidu.项目名称.dao.impl 数据库访问层 , 实现类层
com.baidu.项目名称.domain 存放实体类
com.baidu.项目名称.exception 异常处理
com.baidu.项目名称.constant 常量池
com.baidu.项目名称.utils 存放工具类: 不需要new 也能使用的类 存放一些静态方法
注意:包名全部小写
原文链接:https://blog.csdn.net/tysearch/article/details/117200971
作者:小泽圈儿郎
链接:http://www.javaheidong.com/blog/article/207439/89b66dfc02f9ff9bf666/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!