JSP(java server pages)是一种动态网页技术与servlet相同在服务器端执行,它实现了在java当中使用html标签。
JSP java平台 开发大型的企业型的
Asp.net .Net平台,简单易学,拖拉拽可视化
Php LAMP:Linux + Apache + Mysql + Php
指令 表达式 声明…..
<% java代码 %>
jsp注释
<%-- --%>
jsp脚本注释
<%
//
/* */
%>
jsp页面中定义变量或者方法 百分号后面有感叹号
<%!
java代码
%>
<%!
String name = "大佬";
String getName(){
return name;
}
%>
<%=表达式 %> //表达式不以分号结束<%=表达式; %>
调用声明的变量和方法
<%=name %>
<%=getName %>
发出请求是否为第一次 第一次执行1 否则进入2
1. 把该jsp文件转换成一个servlet文件,这个servlet本质上是java类,编译成字节码文件,并执行jspInit()方法(jspinit方法只在编译期间执行,也就是只执行一次)
2. 生成的对应的字节码(存放在tomcat的work/catalina/localhost文件下有对应的servlet源代码.java和编译的字节码.class)
3. 解析 执行 jspservice(处理用户的请求)
jspservice方法被调用来处理客户端的请求。对每一个请求,Jsp引擎创建一个新的线程来处理该请求。
如果有多个客户端同时请求该jsp文件,则jsp引擎会创建多个线程,每个客户端请求对应一个线程。
多线曾的设计降低了对系统的资源需求,提高系统的并发量和响应时间。由于servlet常驻扎在内存,所以响应很快。
当服务器启动后,当Web浏览器端发送过来一个页面请求时,Web服务器先判断是否是JSP页面请求。
1. 如果该页面只是一般的HTML/XML页面请求,则直接将HTML/XML页面代码传给Web浏览器端。
2. 如果请求的页面是JSP页面,则由JSP引擎检查该JSP页面
如果该页面是第一次被请求、或不是第一次被请求但已被修改,则JSP引擎将此JSP页面代码转换成Servlet代码,然后JSP引擎调用服务器端的Java编译器javac.exe对Servlet代码进行编译,把它变成字节码(.class)文件,然后再调用JAVA虚拟机执行该字节码文件,然后将执行结果传给Web浏览器端。
如果该JSP页面不是第一次被请求,且没有被修改过,则直接由JSP引擎调用JAVA虚拟机执行已编译过的字节码.class文件,然后将结果传送Web浏览器端。
采用JSP来表现页面,采用Servlet来完成大量的处理,Servlet扮演一个控制者的角色,并负责响应客户请求。
Servlet创建JSP需要的Bean和对象,根据用户的行为,决定将哪个JSP页面发送给用户。
首先由浏览器向Web服务器提出访问JSP页面的请求(Request),然后由JSP容器根据请求,将用户所需的JSP页面转换成Servlet,产生的Servlet经过编译后生成类文件,然后再把类文件加载到内存进行执行。最后由Web服务器将执行结果响应(Response)给客户端浏览器。
MVC模式:Jsp + Servlet + JavaBean。M-JavaBean V-Jsp C-Servlet
目前主流的Web开发语言,包括 JSP、PHP、ASP 等,都支持在HTML中插入代码,比 CGI 强大很多。
CGI 早已被程序员所抛弃,已经没有人写纯 CGI 程序了,一条一条地输出HTML代码是一件令人抓狂的事情。
tomcat的work/catalina/localhost文件下有对应的servlet源代码.java和编译的字节码.class
打开.java文件可以找到对应的jspInit jspService方法
Jsp页面修改更新一,就会重新执行生命周期
Jsp内置对象是web容器创建的一组对象,不使用new关键字就可以使用内置对象
out对象可以对浏览器打印输出 out.println()
1. out —–> response.getwriter()
2. request —–> service(request)
3. response —–> service(response)
4. session ——> request.getsession()
5. application ——> getServletContext()
6. exception —–> Throwable
7. Page —–> this
8. PageContext —–> PageContext
9. Config —–> getServletConfig
out是JspWriter类的实例,是向客户端输出内容常用的对象
常用方法:
1. void println()
2. void clear()//flush后 执行这个方法后会报异常
3. void clearBuffer()//flush后 执行这个方法后不会报异常
4. void flush()
5. int getBufferSize()
6. int getRemaining()
7. boolean isAutoFlush()
8. void close()
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。
密码:<%=request.getAttribute("password")%><br>
请求体的MIME类型:<%=request.getContentType() %><br>
协议类型及版本号:<%=request.getProtocol() %><br>
解决URL传中文参数乱码的问题的方法:
1. 进入tomcat目录下conf\server.xml,找到Connector标签,在标签最后面加上一个属性URIEncoding=”utf-8”
2. 重启tomcat服务器
注:在提交jsp页面body标签内增加如下代码代码只能解决表单提交的中文乱码问题,无法解决URL传中文出现的乱码问题
<%
request.setCharacterEncoding("utf-8");
%>
谢谢。
参考