一,B/S结构与C/S结构的区别
CS:client/server 客户端/服务器
BS: brower/server 浏览器/服务器
java程序员主要是面向BS结构,后期也是可以接触CS结构的
二,完整URL的组成
有三部分组成:协议,主机,端口
示例:
http://localhost:8080
http 代表的是超文本传输协议
localhost 代表的是主机部分,这里代表本机
8080 代表的是端口部分
三,如何修改端口号(遇到报错情况(端口已被占用))
1.首先关闭服务(具体方法可参考昨天分享)
2.双击服务器,进入以下界面,右边就可以对端口号进行修改
四,BS的技术特点及作用
BS的作用:
使用动态网页,可以动态输出网页内容、同用户进行交互、对网页内容进行在线更新
BS的技术特点:
用户(客户端)发送请求到服务器(Tomcat)JSp文件-->把内容传入数据库-->由服务器返回一个响应(返回到客户端)
请求【request】 客户端-->服务器
响应【response】 服务器-->客户端
五,关于JSP
JSP (Java Server Pages)是指:
在HTML中嵌入Java脚本代码 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码 然后将生成的整个页面信息返回给客户端
jsp是一个文件格式
java + html + css +js
jsp本质上就是一个java文件
我们写的是jsp文件
tomcat会把jsp文件变成java文件
jvm(java编译器)会把java变成.class
SP中的注释:
在JSP文件的编写过程中,共有三种注释方法:
HTML的注释:<!-- html注释--> 这种注释可以被打印出来
JSP注释:<%-- JSP注释--%> 这种注释打印不出来
在JSP脚本中注释: <% //单行注释 %>
<% /*多行注释 */ %>
JSP的执行过程:
JSP的页面组成:
JSP页面中的元素:
六,常见的报错
1.404 页面找不到(路径存在问题)
2.500 java代码有问题
例子:实现在网络中动态实现当前日期
代码:
这里有两种方法来打印
第一种就是直接 out.print(new Date())
第二种就是利用<%= (表达式 也就是out.print的简写)比如:<%=new Date() %> 在这里的 = 就相当于上面的打印
<%@page import="java.util.Date"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第二节课</title>
</head>
<body>
<h1>欢迎来到项目的首页</h1>
<img src="images/3.gif">
<%
//输出当前的日期
//out.print(new Date());
%>
<!-- out.print -->
<%=new Date() %>
<%=1+2 %>
<!-- 我是注释1 -->
<%-- 我是注释2 --%>
</body>
</html
七,表单数据提取
1.表单(form)
action 表单提交的地址
method 提交的方式
* get 【默认】 显示在地址栏上面,数据长度有限制
* post 不显示在地址栏上,数据长度无限制
【输入框上面必须要携带 name】
2.获取用户提交的信息的方法
从请求中取数据:request.getParameter() 括号里面可以放name
先创建一个简单的登录界面(记住 name属性必不可少)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doLogin.jsp" method="get">
<p>
<input type="text" name="username" placeholder="请输入用户名">
</p>
<p>
<input type="password" name="password" placeholder="请输入密码">
</p>
<p>
<button>登录</button>
</p>
</form>
</body>
</html>
然后可以对界面进行简单的优化,比如增加一点属性(年龄,兴趣爱好等)记住这里同样不能忘记name属性哦
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
表单(form)
action 表单提交的地址
method 提交的方式
* get 【默认】 显示在地址栏上面,数据长度有限制
* post 不显示在地址栏上,数据长度无限制
【输入框上面必须要携带 name】
-->
<form action="doLogin.jsp" method="get">
<p>
<input type="text" name="username" placeholder="请输入用户名">
</p>
<p>
<input type="password" name="password" placeholder="请输入密码">
</p>
<p>
<input type="number" name="age" placeholder="请输入年龄">
</p>
<p>
<input type="checkbox" name="habit" value="打篮球"> A
<input type="checkbox" name="habit" value="打游戏"> B
<input type="checkbox" name="habit" value="看电视"> C
<input type="checkbox" name="habit" value="吃美食"> D
</p>
<p>
<button>登录</button>
</p>
</form>
</body>
</html>
创建一个处理登陆请求的界面:
这时候就可以用到刚刚给用户名和密码设置的 name 属性 通过它来获取用户输入的数据(所有的数据拿出来都是String类型 所以需要我们手动去转换类型)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- 处理登录请求 -->
<h1>这是处理登录请求的界面</h1>
<%
// 内置用户:sa 123
//获取到用户提交过来的表单信息
String username=request.getParameter("username");//从请求中取数据
String password=request.getParameter("password");//从请求中取数据
//从请求中取数据(类型全都是String 必须自己做转换)
String age=request.getParameter("age");
Integer.parseInt(age);// 将字符串变成数字
String[] ts=request.getParameterValues("habit");//接收到多个具备相同name的值
//遍历
String my_habit="";
for(String habit:ts){
System.out.println(habit);//这一行会显示在页面上嘛?
my_habit+=habit+",";//字符串拼接
}
//存到数据库中 应该是一个数据
out.print(my_habit);//存到数据库
my_habit.split(",");
//可以做登录验证了
if("sa".equals(username)&&"123".equals(password)){
out.print("登录成功");
}else{
out.print("登录失败");
}
//【注册】
这样,一个简单的表单验证就完成啦,大家有没有学会呢,想知道更多代码知识的话,精彩下期继续哦。