一、Get请求与POST请求的区别
- get方式提交请求会用 ? 把参数拼接在url地址的后面,多个参数直接用 & 连接,数据不安全。
- post方式会把参数放在请求体中,不可见安全度高。
- get请求的url地址是由长度限制的,post对参数个数无限制。
- get请求参数只支持ascii字符,不能携带特殊符号,post无限制。
二、重定向和转发的问题
- 重定向和转发目的都是跳转页面
- 重定向是由response响应对象发起的,
转发是由request对象发起的。 - 重定向可以访问第三方的网址。
转发只能访问项目内的网页。 - 重定向无法访问WEB_INF服务器级别的目录(404),转发可以访问。
- 重定向后的url是跳转后的网页地址,转发后url还是请求servlet的url。
- 转发可以携带request作用域,可以携带参数跳转,重定向不可。
三、JSP
-
jsp是java的专属网页,以.jsp结尾
-
jsp组成:html+css+js +java
-
jsp不能单独运行,需要装配进tomcat容器中运行
-
jsp本质上是servlet
四、JSP的三大指令
1.编译器指令
1.1 page指令:指定编码和文件格式
<%@ page contentType="text/html;charset=utf-8" %>
1.2 page指令:导入jar包(Random库)
<%@ page import="java.util.Random" %>
1.3 page指令:报错自动跳转页面
<%@ page errorPage="error.jsp" %>
1.4 taglib指令:添加命名空间
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1.5 include指令:静态导入
<%@ include file="two.jsp" %>
2.语法指令
2.1 基本语法
控制台输出 ----明天要考试-----
<% System.out.println("----明天要考试-----"); %>
2.2 取值语法
例子中,页面会显示 小明 两字
<%
String name = "小明";
%>
<h1><%=name%></h1>
2.3 声明全局属性的方法
<%!
String name = "你的名字";
%>
<%!
public void studuy(){
System.out.println("---------你爱学习---------");
}
%>
3.动作指令
3.1取值动作指令
<h1>动作指令取值:<jsp:expression>name</jsp:expression></h1>
页面显示为
动作指令取值:你的名字
五、静态导入与动态导入的区别
- 静态导入属于编译器指令,动态导入属于动作指令;
- 静态导入是把两个jsp文件编译成1个servlet,不能出现相同的属性名和方法名;
- 动态导入,两个jsp文件会单独编译成2个servlet,两者互不影响。
六、JSP的九大内置对象
1.request:请求对象
2.reponse:响应对象
3.pageContext:jsp的上下文对象,通过它可以获取到其他对象
4.session:服务器端保存用户数据的对象
5.application:servlet的上下文对象,保存项目的全局变量
6.config:配置文件对象
7.out:输出流对象
8.page:页面本身对象
9.exception:页面异常对象
七、JSP四大作用域
1.Application:项目不关闭,该作用域就不会消失,通常用来存放
2.Session:用户浏览器关闭,该项目就消失
3.Request:在转发的时候会携带request作用域,两个页面
4.PageContext:该作用域就在页面本身存在,出了该页面作用域消失
名称 | 作用域 |
---|---|
PageContext | 在当前页面有效 |
Request | 在当前请求中有效 |
Session | 在当前会话中有效 |
Application | 在所有应用程序中有效 |
八、EL表达式
1.简化从四大作用域中的取值
<h1>${name}</h1>
2.取值范围
由小到大取
Pagecontext->Request->Session->Application
九、默认端口
- tomcat 的默认端口为 8080
- sql server的默认端口为 1433
十、生命周期
doPost和doGet方法合并为service
十一、导入jar包
引入,在这里导入jstl jar包后才能导入jar包
十二、引入random库
<%@ page import="java.util.Random" %>
十三、配置web打开的静态页面
十四、关于编码
// 设置request请求编码
request.setCharacterEncoding("utf-8");
// 设置响应编码
response.setCharacterEncoding("utf-8");
// 设置contentType
response.setContentType("text/html;charset=utf-8");
十五、必考程序大题
在登录页面编写一个form表单,包含用户名、密码、登录按钮,结合实际servlet编写
html部分
<!--走ajax提交表单-->
<html>
<Script src="login.js"></Script>
<Script src="jquery.js"></Script>
<head>
</head>
<body>
<form onsubmit="return false;" name="myForm">
<p>
用户名:<input type="text" name="username" id="username">
<span id="usernameTS" style="color: red;">username</span>
</p>
<p>
密码: <input type="password" name="pwd" id="pwd">
<span id="pwdTS" style="color: red;">pwd</span>
</p>
<p>
<input type="submit" value="登录" onclick="login()" />
</p>
</form>
</body>
</html>
预览图片如下
js部分
// login.js,与WEB-INF同级
function input() {
var nameInput = document.getElementById('username')
if (nameInput == null || nameInput == ""){ // 例 仅作为参考
alert()
return
}
var pwdInput = document.getElementById('pwd')
if (pwdInput.length != 6 || isNaN(pwdInput)){ // 例 仅作为参考
return
}
var data = $('form').serialize()
$.ajax({
type: "post",
data: data,
url: "/userInfo"
success:function(data){
var json = Json.parse(data)
if (json.msg == "success"){
alert()
}else{
alert()
}
}
})
}
java部分
protected void doPost(HttpServletRequest request, HttpServletResponse reponse) throws ServletExpection,IOExpection(
String username = request.getParameter("userName");
String pwd = request.getParameter("pwd");
if ("admin".equals(username) && "123456".equals(pwd)){
String json = "{\"msg\":\"success\"}";
response.getWriter().print(json);
}else{
String json = "{\"msg\":\"error\"}";
response.getWriter().print(json);
}
)
小题
toString()
<%--
<%-- String str="hello"! 感叹号敲错了--%>
<%-- session.setAttribute("msg",str);--%>
<%-- String getStr = session.getAttribute("msg"); 这一行会报错,因为需要进行强转--%>
<%-- session.getAttribute(getStr);--%
--%>
<%
String str="hello";
session.setAttribute("msg",str);
String getStr = session.getAttribute("msg").toString();
session.getAttribute(getStr);
%>
<h1>${sessionScope.msg}</h1>
// 上方为改正后的结果
count
<html>
<head>
</head>
<body>
<% int count=1; %>
<%=++count%>
<%++count%>
<%count++%>
<%=count++%>
选择一行,让结果为1
</body>
</html>
答案为第四行 <%=count++%>
MVC由哪三部分组成
- 控制器Controller
- 模型Model
- 视图View
JSP的本质servlet
修饰servlet的注解是:@WebServlet()
如何快速使项目启动为404报错?
404错误,找不到请求的html或jsp页面(资源未找到),最简单的将index.jsp改成其他名称
https:// 表示协议
8080: 表示端口
sql题,插入和删除,根据用户名密码删除用户信息
No suitable driver 连接URL格式出现了问题