JavaWeb:是使用Java技术解决相关web互联网领域的技术总和;
web:简单理解网页的意思
Http协议(超文本传输协议),用来规定浏览器与服务器之间进行通信的规则;
默认端口号:80
Https:Http协议的安全版,默认端口号为:443
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
图解Servlet接口、HttpServlet、GenericServlet三者关系
注:指定的(确定的)Mapping映射路径优先级最高,若找不到映射页面,则走默认的Mapping映射路径
ServletContext:web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,代表当前的web应用;
//设置下载文件响应头,为避免中文乱码,使用URLEncoder.encode(filename,"utf-8"),参数一下载文件名,参数二编码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
注:为避免中文乱码,使用URLEncoder.encode(filename,“utf-8”)来加工下,参数一:下载文件名,参数二:编码类型
public class Resp extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取资源绝对路径
String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/路飞.jpg");
//2.获取下载文件名
String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
//3.设置下载文件响应头,为避免中文乱码,使用URLEncoder.encode(filename,"utf-8"),参数一下载文件名,参数二编码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
//4.获取输入流
FileInputStream input = new FileInputStream(realPath);
//5.创建缓冲区
int len=0;
byte[] buffer = new byte[1024];
//6.获取输出流,将资源写入客户端
ServletOutputStream output = resp.getOutputStream();
while((len=input.read(buffer))!=-1){
output.write(buffer,0,len);
}
//7. 关闭流
input.close();
output.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
重定向:即一个web资源收到客户端请求后,通知客户端去访问另一个web资源的过程
HttpServletRequest :HttpServletRequest代表客户端请求,用户通过http协议访问服务器,http请求中的所有信息会被封装在HttpServletRequest对象中,通过使用该对象的方法,可以获得请求的所有信息
会话: 既用户打开浏览器,访问多个web资源后,关闭浏览器的过程,称之为会话;
有状态会话:既用户访问过页面后,下次再来访问时,服务器能够识别出用户曾经访问过该页面的过程;
在计算机中,尤其是在网络应用中,称为"会话控制"。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
生命周期:当客户端访问时,服务器会给用户,创建一个Session对象,该对象只要浏览器没关,便会一直存在
作用:用来存储用户信息
1. <session-config>
2. <session-timeout>30session-timeout>
3. session-config>
JSP全名为Java Server Pages,中文名叫java服务器页面,是一种动态网页技术标准 ,其根本是一个简化的Servlet设计,是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
注:在jsp页面中Java代码会原封不动的输出;HTML代码,则会通过out.write()输出
作用:将程序的输出,输出到客户端
格式:<%= 变量或者是表达式%>
格式:<% java代码或者是HTML代码块%>
格式:<%!变量或者是方法%>
注:表达式与脚本片段运行后,会生成在Jsp生成的java类中的_jspService方法中;但是Jsp声明会被编译到Jsp生成的java类中
格式:<%@指令名 %>(指令名:page、taglib 、include )
特别注意:<%@include%>与jSP标签:<%jsp:include:xxx%>两者作用都是将几个页面合成
但是前者将几个页面融合在一个页面中;后者是页面的拼接,原先是几个页面后面还是几个页面
PageContext、Request、Response、Session、Application 【SerlvetContext】、config 【SerlvetConfig】、out 、page、exception
pageContext.setAttribute("null","null",PageContext.SESSION_SCOPE);
pageContext.forward("/error1.jsp");
格式:${ 变量名}
作用:
EL表达式获取表单中的数据:${param.参数名}
个别举例:
<jsp:include page="index.jsp" flush="true" ></jsp:include>
<jsp:forward page="error1.jsp" ></jsp:forward>
JSTL标签库的使用就是为了弥补HTML标签的不足;JSTL标签库自定义许多标签,可以供我们使用
注意:要使用JSTL标签,即使用JSTL标签库时需导入jstl-api、standard的jar包;jstl-api的jar包在项目中有,但是在Tomcat发布的应用WEB-INF的lib目录下不存在,为了程序正常运行,需要手动将其复制过去
<%--set标签--%>
<c:set var="score" value="76" scope="page" >c:set>
<%--if标签--%>
<c:if test="${score>80}" var="isTrue"/>
<c:if test="${!isTrue}">
<c:out value="成绩小与80">c:out>
c:if>
<%--choose标签,when标签--%>
<c:choose>
<c:when test="${score>90}">
<span style="color: aqua">优秀span>
c:when>
<c:when test="${score>80}">
<span style="color: aquamarine">良好span>
c:when>
<c:when test="${score>70}">
<span style="color: antiquewhite">中等span>
c:when>
c:choose>
<%
ArrayList<String> lala = new ArrayList<>();
lala.add("张三");
lala.add("李四");
lala.add("劳务");
lala.add("啦啦");
lala.add("哈哈");
request.setAttribute("la",lala);
%>
<%--forEach标签--%>
<c:forEach var="s" items="${la}">
<c:out value="${s}">c:out><br>
c:forEach>
相关参数介绍:
<%--forEach标签2 --%>
<c:forEach var="s" items="${la}" begin="0" end="4" step="2">
<c:out value="${s}">c:out><br>
c:forEach>
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。 换句话说,JavaBean就是一个java的类,书写javaBean类必须满足以下条件:
作用:一般用来和数据库的字段来做意义映射
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型(domain)或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。
Filter:过滤器 ,用来过滤网站的数据;
过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
注:1. 过滤器中的所有代码,在过滤特定请求时都会执行,比如下面案例中:只要请求路径为/a/*,都会执行过滤器中代码
注:2.必须要让过滤器继续通行,将请求向下提交,即实现doFilter()方法中第三个参数特有的doFilter()方法: