1. 分析纯Servlet开发web应用的缺陷
在Servlet当中编写HTML/CSS有什么问题?
- 编写难度大,麻烦
- 程序耦合度高
- 代码不美观
- 维护成本高
- 修改一个小小的前端代码,就需要重新编写Java代码,生成新的class文件。重新发布。
如何解决
- Servlet(Java程序)不写了,只写Servlet中的前端代码,让机器将前端代码自动翻译成Servlet这种Java程序。
2. JSP
-
我的第一个jsp:
- 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件没有任何内容。
-
将上面的项目部署之后,启动服务器,打开浏览器,访问以下地址:
- http://localhost:8080/jsp/index.jsp 展现空白
- 实际上访问以上的:index.jsp,底层执行的是index.jsp.class这个Java程序。
- 这个index.jsp会被Tomcat翻译成index.jsp.java文件,然后被编译成index.jsp.class.
- 访问index.jsp,实际上执行的是index.jsp.class中的方法。
-
JSP实际上就是一个Servlet。
- index.jsp访问的时候,会自动翻译成index.jsp.java,这个index.jsp就相当于一个类。
- index.jsp类继承HttpJspBase,而HttpJspBase类继承的是HttpServlet。所以index.jsp类就是一个Servlet类。
- jsp的生命周期与Servlet完全一致,完全就是一个东西,没有什么区别。
-
JSP第一次使用的时候比较慢,因为要编译
-
JSP是什么?
- JSP是Java程序。本质是一个(Servlet)
- JSP是:javaServlet Pages的缩写
- Servlet是javaEE的13个子规范之一,那么JSP也是JavaEE的13个子规范之一。
- JSP是一套规范。所有的web容器/web服务器都遵循这套规范。
-
JSP 基础语法
- 在jsp文件中编写文字,都会自动被编译到哪里?
- 自动编译到Servlet类中的service方法的out.print()中。
- 在JSP中编写的HTML CSS JS代码,这些代码对于JSP来说都是普通字符串。
- JSP中的page指令,用来解决响应时的中文乱码。
- 怎么在JSP中编写java程序
- 使用<%java语句%>
- 在这个符号当中编写的是java程,被编译到Servlet类的service方法内部。
- 在service中编写的代码自上而下顺序执行
- service方法当中不能写静态代码块,不能写方法和定义成员变量。
- 在同一个JSP中,<%%>可以写多个。
- 使用<%java语句%>
-
JSP输出语句
- 怎么向浏览器上输出一个java变量。
- <% String name="jack";out.write("name="+name);%>
- 注意:以上代码中的out是JSP九大内置对象之一,可以直接拿来用。当然,必须在service方法内部使用。
-
在JSP中如何编写JSP的专业注释
- <%-- JSP专业注释,不会被编译到java源代码中--%>
-
JSP基础语法总结
- JSP中直接编写普通字符串:翻译到service方法的out.write("这里");
- <%%>:翻译到service方法体内部,里面是一条一条的java语句。
- <%!%>:翻译到service方法之外。
- <%=%>:翻译到service方法体内部,翻译为:out.print();
- 在jsp文件中编写文字,都会自动被编译到哪里?
-
JSP和Servlet有什么区别?
- 职责不同:
- Servlet:收集数据,逻辑处理,业务处理,连接数据库
- JSP:展示数据
- 职责不同:
2. 使用JSP+Servlet改造oa项目
- 使用Servlet处理业务,收集数据,使用JSP展示数据。
- 将之前原型中的html文件,全部修改为jsp,然后在jsp头部文件中添加page指令(指定contentType防止中文乱码)。
- 完成所有页面的正常流转。
- Servlet中连接数据库,查询所有部门,遍历结果集
- 遍历结果集的过程中,去除部门编号、部门名,位置等信息,封装成java对象。
- 将java对象存放到List集合中。
- 将List集合存储到request域中
- 转发forwa到jsp。
- 在jsp中:
- 从request域当中取出List集合。
- 遍历List集合,取出每个部门对象,动态生成tr。
- 思考一个问题:如果只使用JSP这一个技术,能不能开发web应用?
- 可以,但是不建议
- 包名为啥叫bean
- javabean 实际上是某种规范的java类:比如:
- 有无参数构造方法
- 属性私有化
- 对外提供公开的set和get方法
- 实现java.io.Seriallzable
- javabean 实际上是某种规范的java类:比如:
- Servlet+JSP(已学完)后续暂停
- session
- cookie
- EL表达式
- jstl标签
- Filter
- Listener