什么是JSP
JSP全名为Java Server ,Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,用于动态Web技术。
特点:
代码简单,与HTML类似,使得写网页变得轻松
与HTML区别:
- HTML只能提供静态数据
- JSP页面中可以嵌入Java代码,为用户提供动态数据
JSP原理
可以在C盘的AppData中找到jsp文件,发现jsp文件最终都转变成了Java代码,并且编译为class文件
打开index_jsp.java与原来项目中的index.jsp进行对比
源码做了什么事情
- 1 所有HTML语言都被自动转换成前端可识别的形式(早期程序员需要做的事情)
- 2 该类继承的方法中含有以下三个
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSP Service
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
- 3 判定请求类型
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
}
- 4 内置了一些对象()
final javax.servlet.jsp.PageContext pageContext;//页面上下文
javax.servlet.http.HttpSession session = null;//session
final javax.servlet.ServletContext application;//ServletContext
final javax.servlet.ServletConfig config;//config 配置
javax.servlet.jsp.JspWriter out = null;//输出对象
final java.lang.Object page = this;//代表当前页面
final javax.servlet.http.HttpServletRequest request //请求
final javax.servlet.http.HttpServletResponse response//响应
- 5 输出页面前增加的代码初始化了一些对象,这些对象可以在JSP页面中直接使用
response.setContentType("text/html"); //设置响应的页面类型
//初始化一些对象
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;
举例
发现问题 每当重新启动项目时,该index_jsp.java和index_jsp.class文件所在work目录都会自动删除重新生成
说明,其实jsp就是servlet,只是帮我们做了很多事情。
注意事项
** 在写jsp页面时 java代码需要在<% %>中写**
示例 重新写了一个jsp页面
hello.jsp
访问页面
源码相关部分
说明:在JSP页面中
- java代码不变
- HTML代码会被转换为
out.write("");
的形式输出到前端