Web小结(乱)

前端和后端数据交互

前传递后
1 form:
name:参数
submit:提交
action:网址提交
2 通过模板引擎(jsp,thymeleaf)语法定义到类路径进行超链接
后传递前:
1 通过模板引擎显示
2 将视图,字符串等用response返回

resource资源分类

静态资源:不需要查数据库也不需要程序处理,直接就能够显示的页面
动态资源:需要程序处理或者从数据库中读数据,能够根据不同的条件在页面显示不同的数据

Servlet

流程:
建一个继承HttpServlet的Servlet类,重写doGet和doPost方法,方法中实现接收,业务和视图跳转
在web.xml中配置servlet,在pattern中写入地址
完成跳转页面

response

remote Address:显示对面ip
Host:域名

req,resp

关于req.getRequestDispatcher()和resp.senddirect("/")

1 前者不改变地址栏,携带参数直接前往页面
2 后者改变地址栏,返回页面位置给客户让其重新请求,故原数据消失

req.getParameter和req.getAttribute

getParameter只能获得string值,常用于jsp的表单
仅有setAttribute之后才能getAttribute

req和resp中文乱码

req/resp.setCharacterEncoding仅对于请求内的文字有效,所以过滤器可以替代,但jsp里本来的文字需要通过以下代码解决乱码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

resp.setHeader和resp.addHeader

都用于通知客户端浏览器为服务当前响应做出举动,如要下载文件时会通知浏览器以附件方式用utf-8解读文件名来准备解读io数据,下载下来文件

        resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));

但resp.setHeader()遇到相同名称Header时会覆盖,而后者只会加入

关于setAttribute和getAttribute注意技巧

1 几个web类都有这些方法,根据不同作用域所需选择不同对象调用
2 在使用中,很可能出现很多页面用到同一个属性,建个util包,将其赋给一个常量,可以很好地减少对相同变量的修改

@RequestParam()

等同于getParameter

不同路径指向

request.getRequestURL() 返回全路径
request.getRequestURI() 返回除去host(域名或者ip)部分的路径
request.getContextPath() 返回工程名部分,如果工程映射为/,此处返回则为空
request.getServletPath() 返回除去host和工程名部分的路径
例如:
request.getRequestURL() http://localhost:8080/jqueryLearn/resources/request.jsp
request.getRequestURI() /jqueryLearn/resources/request.jsp
request.getContextPath()/jqueryLearn
request.getServletPath()/resources/request.jsp
https://blog.csdn.net/kaikaixinxiyiwannian/article/details/78732410

当一个项目有多个web型模块
resp.senddirect("/"):指向当前项目根地址,不会指向web模块根地址,请注意在输入url前加入"/",不然会指向错误地址
this.getServletContext().getRealPath:(idea)指向target文件夹/模块名文件夹
${pageContext.request.contextPath}:指向web模块根地址

req.getRequestDispatcher():指向web模块根地址(有/和无/相同)(req.getContextPath()用于查找当前所处相对路径)

Session

session消耗大,没有必要validate,可以多通过removeAttribute(Session().getId)来销毁存在凭据,达到重新使用的目的

JSP

JSP原理

JSP本质上是一个servlet,这一点可以在C盘user\idea\Tomcat\system\work\Catalina\localhost\project\org\apache\jsp下每一次对jsp的请求,服务器会把jsp文件夹更新(作者发现servlet和.class的修改日期并不是今天,所以很可能服务器也是从其他地方取这些东西),将jsp翻译为servlet(这一次没有用过服务器),再将编译后的class版本发回客户端

JSP语法

表达式

<%=  >

会在service()方法中输出out.print

脚本

<% >

service方法会在相应位置原封不动地复制一份一样的

声明

<%@  >

声明的东西会出现在对应servlet类的顶端

三种必知声明

复合使用:根据service()相应位置可以把html标签,脚本和表达式型标签合起来使用

注释

<%-- --%>

九大内置对象

九大对象被声明在service()方法中,所以可以直接调用

out 用于输出
config是ServletConfig别名,极少使用
response
page类似于java的 this ,极少使用
exception用于输出异常
以下四个内置对象用于存储:
pageContext 当前页面有效
request 一次请求内有效
session 直到手动销毁或关闭浏览器失效
application是ServletContext的别名 直到服务器关闭失效

jsp必知标签

<jsp:include page=" ">
<%--req.getRequestDispatcher("/").forward(req,resp)--%>
<jsp:forward page="">
    <jsp:param name="" value=""/>
</jsp:forward>

EL标签

作用:
获取对象,获取数据,获取表达式值

<%--经典案例:用于指定到web项目根目录--%>
${pageContext.request.contextPath}

注意:Attribute可以通过{xxScope.get("")}获得,也可以直接填变量名从小作用域到达作用域查询,但jsp表单提交的数据需通过${param.get("")}获得

JSTL标签库

分类
核心标签(唯一需要掌握)
 格式化标签
 SQL标签
 XML标签

使用引入

1 <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
(这个仅用于导入核心标签,其余标签细节改动,根据版本标签略有变化)
导入
2 maven项目和Tomcat/lib分别添加standard和jstl-api

核心方法案例(取自狂神说)

<c:if test="${param.username==''"}" var="">

<c:set var="score" value="98"/>
<c:choose>
    <c:when test="${score>=90}">
        你的成绩为优秀
    </c:when>
    <c:when test="${score>=80}">
        你的成绩为一般
    </c:when>
    <c:when test="${score>=70}">
        你的成绩为良好
    </c:when>
    <c:when test="${score<=60}">
        你的成绩为不及格
    </c:when>
</c:choose>
<c:forEach var="people" items="${list}">
    <c:out value="${people}"/> <br>
</c:forEach>

MVC架构图

filter

发生在客户端和服务器端,优先于控制层

同一页面实现不同功能地过滤应用多个过滤器,而不是放在同一个,如把中文乱码分离成一个过滤器,和把服务于相同页面的不同功能也给分离成多个过滤器。

过滤器的优先级由在web.xml的顺序决定

拦截器

错误示范:
在true时跳转页面,false时默认进行,这样会让控制层失效
正确:如果页面正确应返回true,让其自动进入控制层,错误时跳转到应该的页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值