Web程序设计

一、Get请求与POST请求的区别

  1. get方式提交请求会用 ? 把参数拼接在url地址的后面,多个参数直接用 & 连接,数据不安全。
  2. post方式会把参数放在请求体中,不可见安全度高。
  3. get请求的url地址是由长度限制的,post对参数个数无限制。
  4. get请求参数只支持ascii字符,不能携带特殊符号,post无限制。

二、重定向和转发的问题

  1. 重定向和转发目的都是跳转页面
  2. 重定向是由response响应对象发起的,
    转发是由request对象发起的。
  3. 重定向可以访问第三方的网址。
    转发只能访问项目内的网页。
  4. 重定向无法访问WEB_INF服务器级别的目录(404),转发可以访问。
  5. 重定向后的url是跳转后的网页地址,转发后url还是请求servlet的url。
  6. 转发可以携带request作用域,可以携带参数跳转,重定向不可。

三、JSP

  • jsp是java的专属网页,以.jsp结尾

  • jsp组成:html+css+js +java

  • jsp不能单独运行,需要装配进tomcat容器中运行

  • jsp本质上是servlet

    image-20220504115800514

四、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>

页面显示为

动作指令取值:你的名字

五、静态导入与动态导入的区别

  1. 静态导入属于编译器指令,动态导入属于动作指令;
  2. 静态导入是把两个jsp文件编译成1个servlet,不能出现相同的属性名和方法名;
  3. 动态导入,两个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包

image-20220601085033981

十二、引入random库

<%@ page import="java.util.Random" %>

image-20220601090627921

十三、配置web打开的静态页面

image-20220601100151241

十四、关于编码

// 设置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>

预览图片如下

image-20220608152455776

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格式出现了问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值