(第1讲)jsp简介
来源:互联网 发布:大淘客与淘宝联盟 编辑:程序博客网 时间:2024/05/21 04:39
1、为什么会出现jsp技术?
有部分原因是servlet做界面很不好,所以有了jsp。
jsp功能的强大是因为可以与javabean结合是用;即jsp做前台(界面)、javabean做后台(逻辑);
jsp+javabean+servlet就构成了mvc的开发模式。
2、jsp=html+java+jsp标签/语法+javascript+css
3、Jsp的基本语法:
(1)指令元素:用于从jsp发送一个信息到容器,比如设置全局变量、文字编码、引入包等:
1)page指令:<%@page contentTyoe="text/html;charset=gb2312"%>
2)include指令:<%@ include file="filename"%>
3)taglib指令:这个指令允许在jsp页面使用自定义的标签: <myTag:yourTage num1="123">
(2)脚本元素: 在一定程度上可以理解为java的片段
1)scriplet: <%java代码%>
2)表达式: <%=java表达式%><%=rs.getString(1)%>
3)declaration声明 :
<%!变量声明%> 比如说:<! int count=10%>
<%!函数声明%> 比如说:
<%!int jisuan(int num)
{
int result = 0;
for(int i=0;i<num;i++){
result = result+i;
}
}
%>
(3)动作元素:是使用xml语法写 的,是jsp规定的一系列标准动作,在容器处理jsp时,当容器遇到动作元素时,就执行相应的操作。
1)<jsp: useBean> //创建一个javabean实例
2)<jsp: setProperty> //给一个javabean实例设置初始值
3)<jsp: param> //给一个jsp设置参数,常常与<jsp:include>结合使用
<jsp:include file="info.jsp">
<jsp: param name="parameter1" value="parameterValue“/>
<jsp: param name="parameter2" value="parameterValue“/>
< /jsp:include >4)<jsp: getProperty> //取得一个javabean实例的成员变量
5)<jsp: include> //引入另外一个文件
6)<jsp: plugin> //使用插件
7)<jsp: forward> //转发
8)<jsp: fallback> //
这是最常用的8个动作元素,还有另外的
(3)9大内置对象:
1) out对象:想客户端输出数据、字节流:out.println("");
getParameter(String name);
getParameterValues(String name);
setAttribute(String name,Object value);
getCookie();
3) response对象: 封装jsp产生的回应
addCookie( Cookie cookie);
sendRedirct( "/my.jsp");
4) session对象: 用户保存用户的信息,跟踪用户的行为
setAttribute(String name,Object value);
getAttribute(String name);
5) Application对象:多个用户共享该对此昂,可以做计数器
7) exception对像:代表运行时的一个异常
getMessage();
9) config对象: 代表jsp对应的servlet的配置,可以得到 web,xml文件中的参数
4、浏览器访问jsp文件的过程:
如果是第一次访问, .jsp文件被服务器翻译成一个对应的java文件(servlet),然后在被编程成 .class文件,并加载到服务器内存中;
如果是以后访问,那就直接调用内存中的jsp实例(实例即为某个类的对象),所以第一次访问jsp慢,后面访问jsp 的速度就会变快了、
5、jsp 和 servlet区别与联系
区别:
(1)如果jsp文件修改之后,不用tomcat 进行reload,但是servlet需要;
(2)jsp的URL需要带上后缀,比如:http://localhost:8080/myWeb/hello.jsp ; servlet的URL不需要戴上后缀:http://localhost:8080/myWeb/hello
(3)servlet编写完之后需要编译,因为是java文件,且需要进行部署; 而jsp既不需要自己手动的编译,也不用自己手动的部署。
(4)jsp支持中文。
联系:
(1)jsp 是以 servlet为基础的;
(2)jsp第一次运次是被翻译为servlet,在编译为 .class文件,最后执行
6、一个jsp文件例子:jsp=html+java+jsp标签/语法+javascript+css
hello.jsp文件:
<%@ page contentType= "text/html;charset=gb2312"%> 这就是 jsp语法
<html> 这就是 html标签
<body>
<h1>jsp1</h1>
<% out.println("hello,你好"); %> 这就是 java片段:一定是被尖括号和百分号包括起来的
</body>
</html>
在tomcat安装目录下的work文件夹下的Catalina文件夹下的localhost文件夹下的myWeb文件夹下的apache文件夹下的jsp文件夹中就有被浏览器翻译为java文件的对应的servlet。
G:\tomcat\work\Catalina\localhost\myWeb\org\apache\jsp\hello.jsp文件:
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/7.0.70
* Generated at: 2016-09-02 02:48:27 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();
private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}
public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
if (_el_expressionfactory == null) {
synchronized (this) {
if (_el_expressionfactory == null) {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
}
}
}
return _el_expressionfactory;
}
public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
if (_jsp_instancemanager == null) {
synchronized (this) {
if (_jsp_instancemanager == null) {
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
}
}
return _jsp_instancemanager;
}
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=gb2312");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("<html>\r\n");
out.write(" <head>\r\n");
out.write(" \r\n");
out.write(" </head>\r\n");
out.write(" <body>\r\n");
out.write(" <h1>jsp1</h1>\r\n");
out.write(" ");
int a =0;
int b = 9;
int c = 9;
out.println("hello,浣犲ソ"); 这个就是jsp文件中写的java片段
out.write("\r\n");
out.write(" </body>\r\n");
out.write("</html>");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
- (第1讲)jsp简介
- (第1讲)数据结构简介
- (第2讲)jsp与javabean
- 《基于BootStrap3的JSP项目实例教程》第1讲
- (第3讲)jsp、javabean、servlet联系
- 掌握 Ajax ——第 1 讲 Ajax 简介
- Servlet自学第7讲:Servlet简介
- JSP学习笔记(1)-JSP简介
- c语言程序设计(第1讲)关键字
- (第1讲)jQuery选择器
- (第1讲)Struts入门
- (第1讲)hibernate了解
- (第1讲)spring的基础知识
- 数据结构第1讲
- 线性代数第1讲
- 《基于BootStrap3的JSP项目实例教程》第2讲
- 《基于BootStrap3的JSP项目实例教程》第3讲
- 《基于BootStrap3的JSP项目实例教程》第4讲
- iOS动手做一个直播(代码篇)
- 千万级pv高性能高并发网站架构
- React生命周期图示
- Get两大主流简历模版
- swiper 插件使用及问题解决
- (第1讲)jsp简介
- HTML&CSS基础学习笔记1.29-灵活地使用样式
- 8个CSS函数的小技巧
- Java网络编程
- 恶意软件RIPPER解析——其如何盗取ATM机的巨额泰铢?
- Linux进程间通信——使用共享内存
- Memcache和redis的区别是什么?
- 为边框应用图片 border-image
- Ios的消息转发机制