500 JSP 发布项目到服务器并访问
1.创建web项目
2.发布到服务器上
目录不可含中文!
D:\environment\apache-tomcat-7.0.79
tomcat和idea关联 项目和tomcat关联:
为什么需要Tomcat服务器
最终项目变成两个!
本地目录:C:\Users\37310\IdeaProjects\jsp01
tomcat发布目录:C:\Users\37310\IdeaProjects\jsJquery\out\artifacts\jsp01_war_exploded
501 JSP 发布项目到服务器并访问总结
1.清楚为什么项目发到服务器上!
2.清楚部署目录和开发目录!
3.认识url http://localhost:8080/jsp01/cart/cart.html
4.控制台乱码处理
https://www.cnblogs.com/yanglichen/p/11435628.html
5.http://localhost:8080/jsp01/ 直接找index.jsp
502 JSP 获得时间案例
获得时间:
<%--
Created by IntelliJ IDEA.
User: 37310
Date: 2021/7/12
Time: 3:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script>
function demo1() {
var date = new Date();
var time = date.toLocaleString();
document.getElementById("sp").innerText=time;
}
</script>
</head>
<body οnlοad="demo1()">
获得时间<span id="sp"></span>
</body>
</html>
如何获取服务器时间?
<body οnlοad="demo1()">
获得时间(浏览器)<span id="sp"></span>
<%--小脚本:可以书写java代码--%>
<%
Date date = new Date();
String time = date.toLocaleString();
%>
<%--表达式--%>
<%="获得时间服务器时间:"+time%>
</body>
为什么下面这个是服务器时间?
原理示意图:
如果加上 Thread.sleep(3000) 哪个时间靠前?
<%
Date date = new Date();
String time = date.toLocaleString();
Thread.sleep(3000);
%>
<%--表达式--%>
<%="获得时间2:"+time%>
JSP = Java Server Pages
Sun公司推出的动态网页技术,类似的技术还包括ASP、PHP。相对的技术是HTML(静态网页技术)
动态生成网页数据,而不是有动态效果的网页!
JSP是在HTML中嵌入Java脚本代码
JSP是服务器端技术(JavaScript是客户端技术)
由应用服务器来编译和执行嵌入的Java脚本代码,然后将生成的整个页面信息返回给客户端
503 JSP Tomcat的讲解
504 JSP 统计网站访问人数A
<%--
Created by IntelliJ IDEA.
User: 37310
Date: 2021/7/12
Time: 13:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>统计网站的访问人数</title>
</head>
<body>
<%
int count =0;
count++;
%>
<%="本网站访问人数为"+count%>
</body>
</html>
该如何解决?
C:\Users\37310.IntelliJIdea2019.3\system\tomcat\Unnamed_jsJquery
查看服务器解析后的java代码如下:
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=UTF-8");
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("\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write(" <title>统计网站的访问人数</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write(" ");
int count =0;
count++;
out.write("\r\n");
out.write(" ");
out.print("本网站访问人数为"+count);
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
} 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);
}
}
优化:
<%!
int count =0;
%>
<%
count++;
%>
<%="本网站访问人数为"+count%>
成功,刷新后可以+1!
int count =0;变成成员变量!
总结
jsp的本质是一个servlet(就是类) 单实例多线程的程序
jsp页面中书写java代码的方式有3中
A、小脚本
B、表达式
C、声明式
[3]小脚本和声明式的区别
A、小脚本中声明的变量是局部的变量 ,在声明式中声明的变量是成员变量
B、小脚本中不可以定义方法 在声明式中可以定义方法
C、在小脚本中可以使用jsp的内置对象 在声明式中不可以使用
[4]所有的注释A、java中的注释 3种
B、HTML中注释
C、JSP中注释
推荐使用jsp中的注释
优点:节省网络的带宽,可以增快访问的速度
505 JSP 统计网站访问人数B
<%--
Created by IntelliJ IDEA.
User: 37310
Date: 2021/7/12
Time: 13:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>统计网站的访问人数</title>
</head>
<body>
<!--动作标识-->
<jsp:include page="head.jsp"></jsp:include>
<div style="height: 300px">
<%-- 声明式--%>
<%!
int count =0;
%>
<%-- 小脚本--%>
<%
count++;
%>
<hr/>
<%="本网站访问人数为"+count%>
</div>
<hr/>
<jsp:include page="foot.jsp"></jsp:include>
</body>
</html>
指令标识
<%--指令标识 page taglib taglib--%>
<%@include file="head.jsp"%>
<%--
Created by IntelliJ IDEA.
User: 37310
Date: 2021/7/12
Time: 13:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>统计网站的访问人数</title>
</head>
<body>
<%--动态包含--%>
<%--<jsp:include page="head.jsp"></jsp:include>--%>
<%--<jsp:forward page=""></jsp:forward>--%>
<%--指令标识 page taglib taglib--%>
<%--静态包含--%>
<%@include file="head.jsp"%>
<div style="height: 300px">
<%-- 声明式--%>
<%!
int count =0;
%>
<%-- 小脚本--%>
<%
count++;
%>
<hr/>
<%="本网站访问人数为"+count%>
</div>
<hr/>
<jsp:include page="foot.jsp"></jsp:include>
</body>
</html>
动态包含和静态包含的区别?
- 静态的引入式不会产生class文件 ,动态的引入式产生class文件
- 静态的引入式把代码原封不动的复制到主文件中,动态的引入是相当于方法的调用
3 静态的引入的方式引入文件和主文件中是不可以存在同名的变量 ,动态的引入可以存在
4 静态的引入产生的时机是第一个阶段 ,动态的引入式产生产生的时机是第三阶段
jsp执行步骤分为几步?
翻译–》编译–》执行
506 JSP 常用概念的解析
1.动态网页和静态网页
2. JSP/ASP/PHP的比较
3 B/S和C/S
4 常用服务器类型
507 JSP登录案例的实现
登陆页面
<%--
Created by IntelliJ IDEA.
User: 37310
Date: 2021/7/13
Time: 1:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>登陆页面</h3>
<form action="doLogin.jsp">
<p>
用户名:<input type="text" name="uname"/>
</p>
<p>
密码:<input type="text" name="pwd"/>
</p>
<p>
<input type="submit" value="登录"/>
</p>
</form>
</body>
</html>
http://localhost:8080/jsp01/doLogin.jsp?uname=2&pwd=4
用name的值进行传递!
处理登录操作:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>处理登录操作</title>
</head>
<body>
<%--http://localhost:8080/jsp01/doLogin.jsp?uname=2&pwd=4--%>
<%
//[A]接收Login.jsp传过来的数据
String u = request.getParameter("uname");
String p = request.getParameter("pwd");
//[B]数据处理--拿着用户和密码去数据库作比较
boolean flag = false;
if("sxt".equals(u)&&"123".equals(p)){
flag =true;
}
//[C]给用户做出响应
if(flag){
out.print("登陆成功");
}else {
out.print("登录失败");
}
%>
</body>
</html>
508 http协议理解
1、HTTP工作原理:
遵循请求(Request)/应答(Response)模型
无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端
请求前需要建立连接,响应后会断开连接;连接不会持续存在
一个页面有多个图片、JS、CSS等,就会发生多个请求和响应
HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用(Connection: keep-alive)
HTTP2:
2、HTTP协议特点
支持浏览器/服务器模式。
简单快速: HTTP本身既简单又能有效地处理大量请求。
灵活:HTTP允许传输任意类型数据。由Content-Type加以标记。
无状态:Web浏览器和Web服务器之间不建立持久的连接. 协议对于事务处理没有记忆能力。
在处理记忆登录用户名、记忆购物车多个条目信息环境,只有HTTP协议是不能实现的
3、HTTP请求
请求方式的格式为:
请求行:统一资源定位符(URL)、协议版本号
消息报头:包括请求修饰符、客户机信息
可能的内容:POST请求的内容
请求方法
Get、Post、DELETE、HEAD、PUT、TRACE、CONNECT、OPTIONS
重点掌握GET和POST
HTTP URL (统一资源定位符):
格式:http://host[“:”port][abs_path]
http://127.0.0.1:8080/digitalhome/pic/left.html
http://www.sina.com
http://sports.sina.com.cn/bbs/
4、HTTP响应
响应信息格式
状态行,包括信息的协议版本号、一个成功或错误的代码,
消息报头:包括服务器信息、字符编码、MIME类型
响应正文
状态代码有三位数字组成,第一个数字定义响应类别,有五种取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
302: REDIRECT //重定向
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,如输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误