我是靠谱客的博主 孝顺彩虹,最近开发中收集的这篇文章主要介绍JavaWebJavaWebTomactServletJSP四大容器九大内置对象状态码过滤器监听器Servlet多方法Cookie上传下载JQueryAJAX正则JQuery,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JavaWeb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8GJXebo-1576330714850)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20191111085622867.png)]

![image-20191111085739215](C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20191111085739215.png

Tomact

Apache基金组织的产品,是一个服务器,一个web服务器

非常易用,最适合入门学习,但是商用不建议使用

类似的服务器:JBoss, WebLogic(application Server) Apache IIS(windows)

Resin,应用程序服务武器 WebSphere

目录

bin 可执行程序 Windows是bat文件,Linux是sh文件

conf 服务器的配置,一般配置端口或者网站的配置信息(网站的名称,路径)

webapps 主要部署网站的代码

work jsp反编译,编译后生成的文件

端口默认是8080,启动命令是startup.bat/sh catalina.bat run (参数)

shutdown.bat/sh 关闭服务器,或者是catalina.bat stop

一台服务器启用2个Tomact 需要配置不同的端口

8080 9090 8005 9005 8009 9009

Servlet

是一段Java代码,是运行在web服务器上的一段Java代码

MVC模式(开发模式),Servlet扮演了c的角色,即,控制器controller

页面的请求先到Servlet中,Servlet调用M(Model 业务层 ,M调用dao)

M返回给c一些结果信息,Servlet会根据结果进行结果跳转到相应页面,完成一次请求

v视图的角色,只负责展示信息,由JSP来扮演(view)

jsp1模式:把所有的业务都在一个jsp 中完成

让一个类继承HTTPServlet就是一个Servlet

每一个Servlet在服务器中都有一个唯一的名称和唯一的URL,浏览器访问某一个URL到Tomcat服务器中,Tomcat服务器就会把该URL对应到某一个Servlet中

@WebServlet(name="HelloWorld",urlPatterns={"/Hello","/HelloWorld"})
public class HelloWorld extends HttpServlet {    
    @Override    
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
        resp.getWriter().println("Nice...");    
    }}

Servlet名称是HelloWorld,映射地址是“/Hello”,"/HelloWorld"
@WebServlet("/Hello")

Get

HttpServlet是所有Servlet的父类,他里面两个重要的方法,doGet,doPost

doGet只接受客户端get方式的请求(get方式值得是直接通过地址栏访问,或通过a标签访问,或form表单的提交方式为get方式)

doGet和doPost中的业务 代码是一样的, 通常只需要写一个方法,另一个方法直接调用,

如:doGet(){xxxxxxxx} doPost(){ doGet(); } 需要重写

Get方式请求,明显的标记:地址栏显示请求的地址和数据,比如登录:

http://localhost:8080/LoginServlet?username=Tom&password=Tom

所以,对于敏感性的数据业务不适合用明码的Get请求,要用Post

Get适合获取数据用的,不适合提交数据

get提交的数据有限制,大致在2k左右

在请求的地址后面加非常多的参数LoginServlet?username=xx&password=xxx

var value = ‘’;

for(var i =0;i<1000000;i++){

value+=“Tom”;

}

登录

document.getElementsByTagName(“a”)[0].href="/loginServlet?Username"+value;

Post

提交的数据理论是无限大的,看服务器的内存资源

地址栏只显示地址部分的内容,提交的数据不显示,浏览器软件会把提交的数据打包作为报文发过来。比如登录时只显示:http://localhost:8080/LoginServlet

用户名和密码不在地址栏显示

Post适合给服务器提交数据(一般是增删改的操作,比如注册或上传文件)

只有当form的method改为post时才能是post提交

传参

HttpServletRequest HttpServletResponse 这两个类一般出现在方法的参数中是Tomcat容器创建的,给Servlet使用的,Tomcat找到用户的URL对应的Servlet,就会把请求的数据封装到request对象中,Servlet代码从此对象中来获取请求数据

如果Servlet需要给用户相应内容,则通过Tomcat给的response来传递数据

request.getParameter(“参数名”)返回的永远是字符窜的值

参数名:就是URL中的?后面或&后面跟的变量名,或者form表单中指定的name

以上的name中的userName就是参数名

Post 方式提交时,它后面的URL中跟的参数统统无效,必须使用隐藏于来完成传参数

乱码

后台给页面相应的乱码:response.setCharacterEncoding(“UTF-8”)

此行代码一定要写在方法的第一行,或者第二行,页面提交到后台的乱码是:

request.setCharacterEncoding(“UTF-8”)

这两行的代码是方法的前两行

request的这种解决乱码的方法, 只适用于Post提交,不适于Get方式提交的乱码问题

response要看浏览器软件此时的解码方式,有一定的随机性

response.setHeader("Content-type", "text/html;charset=UTF-8");

生命周期

HTTPServlet父类,五个方法

init()初始化,当Servlet对象创建后,即调用此方法进行初始化

service()在这个方法中会根据提交的方式不同,调用子类对象的doGet和doPost

service是工作方法的入口,doGet/Post是具体处理业务的方法

destroy()是Servlet销毁的方法,如果Servlet有占用资源,请在此释放

Tomcat关闭(重启服务,重新部署)时,调用此方法

init(ServletConfig)可以通过配置参数在初始化Servlet过程中获取参数

创建时机:

在第一次访问时,创建

给Servlet配置load-on-startup参数,Tomcat启动时创建

转发和重定向

转发:发生在后台,A.jsp 提交到 AServlet ->B.jsp/(BServlet)->

把请求转发到其他的Jsp或Servlet中

由A.jsp发起请求,由AServlet进行转发

表现出的现象是:地址栏中始终显示的是AServlet,而不管Servlet转发了多少次

生活案例中:张三去药房取药,提交给工作人员一个药单,工作人员先去药房拿板蓝根,再去西药房拿白加黑,而张三只是站在窗口,最后拿到药

重定向:发生在前台,A.jsp->AServlet -->>B.Jsp

把请求重定向到JSP或Servlet中

由A.Jsp发起请求,由AServlet进行重定向

表象出的现象:地址栏在变化,重定向一次,变化一次

生活中案例:张三又去药房取药,提交给工作人员一个药单,工作人员让他去中药房拿板蓝根,张三自己去了,中药房的人给了他药,又让他去西药房,张三又去了西药房,拿到白加黑,张三去了两个地方,最后拿到药

转发是由 request发起,重定向是由Response发起

转发中的request是同一个对象,该对象中的请求信息始终有效

重定向一次,就会有一个新的request对象,该对象中的请求是新信息

JSP

全称Java Server Pages

运行在Web服务器上

HTML代码+Java代码构成了JSP的代码

<% java代码块 %> <%=此处是Java变量>后面不要写封号

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

Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面
info定义JSP页面的描述信息
isELIgnored指定是否执行EL表达式

2.include包含JSP文件,即在一个JSP源码中包含另一个JSP的源码

<%@ include file =“other.jsp”>

因为源码整合,所以两个jsp页面中不能有相同的Java变量名

3.taglib指定标签库

一般在JSP中多使用JSTL标签, Java server pages standarded tag library

这个标签一般用一个别名 c 代替,所以JSTL标签又习惯称为c 标签

常用C标签的if 和 For 两个功能

<%@ taglib uri="http://…"prefix=“c”%>

<c: test=“xxxx”> <c:forEach >

要使用c标签需要先使用maven的管理

items 数据来源

指令标签

动作标签

jsp标签名

<jsp:action_name attribute=“value” />

发生在jsp运行阶段,指令标签发生在编码阶段

<jsp:include 和<%@ include 的区别

前者是动态包含,即只包含画面,后者是静态包含,即包含源码,继而包含了画面

既然包含了画面,则两个JSP中的变量名是可以重复的(动态包含)

<jsp:include page=“要包含的页面”>

<jsp:forward page=“要转发的页面”>

El表达式

Expression Language

可以轻松获取容器中的属性/变量

jsp中有一个默认的容器pageContext

在这个容器中放一个属性username,通过EL来获取

<%

​ pageScope.getAttribute(“username”,“admin”)

%>

${pageContext.username}用Java表达式来获取是

<%=pageContext.getAttribute(“username”)%>

EI表达式主要获取容器中的数据

pageContext是jsp是当前页面容器的变量名,pageScope是EL表达式中代表了当前pageContext的意思,pageContext是Java中的变量名,pageScope是范围的意思

一般不写范围只写属性

C标签

四大容器

由小到大

pageContext -----pageScope 当前页面有效

request ----requsetScope 当次请求有效

session ----SessionScope 当前会话有效,适用于重定向或打开不同的请求

application -----applicationScope当前系统有效,适用于不同用户和浏览器

EL表达式中如果缺失范围,则由小到大依次查找变量,知道找到为止

pageContext中有username=page

request中有username=request

session中有username=session

application中有username=application

${username} == page

九大内置对象

JSP内置对象(9个内置对象):
1.PageContext javax.servlet.jsp.PageContext JSP的页面容器
2.request javax.servlet.http.HttpServletrequest 获取用户的请求信息
3.response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
4.session javax.servlet.http.HttpSession 用来保存每一个用户的信息
5.application javax.servlet.ServletContext 表示所有用户的共享信息
6.config javax.servlet.ServletConfig 服务器配置信息,可以取得初始化参数
7.out javax.servlet.jsp.jspWriter 页面输出
8.page java.lang.object)
9.exception java.lang.Throwable

状态码

Http协议的响应状态码,五种

1XX:三个数字,代表服务器已经成功接收客户端提交的请求,给客户端的会话

2XX: 代表了你的请求已经完成接收,并处理完成

3XX:重定向,(继续请求另外的)

4XX:客户端错误(语法错误,无法完成请求)请求的资源不存在404,受限403/405

5XX:服务器错误(处理过程中发生了错误)500

10086(服务器的角色),你(浏览器的角色)

过滤器

过滤所有的请求,经过适当的处理,或者中断请求,或者对请求进行加工处理并转向它的目的地,或进入下一关(下一个过滤器)

小明去Zoo,大门要过滤,去Panda要看门票(过滤器)Panda馆近距离触摸小动物要门票(过滤器)

小明在最后一个过滤器被拒,因为不满足条件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NXB0XtMz-1576330714857)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20191113165640738.png)]

实现Filter接口,并配置过滤器的路径,(哪些请求需要进入该过滤器)

使用场景:编码过滤器(统一解决乱码问题);登录过滤器(未登录则不能使用系统,同事重定向到登录页面);权限过滤器(判断当前用户有没有操作权限,如果没有,则显示错误页面:无权限)

web.xml中过滤器按照配置的先后顺序起作用

注解配置的过滤器是按照注解名称的ASCLL排序的

过滤器的生命周期:Tomcat(WEB)服务启动即创建和初始化,请求经过时,处理

Tomcat服务器停止时,销毁

WEB-INF下任何资源都不能直接访问,要通过后台转发来访问,以此来提升项目的安全性,WEB-INF的特性。

既然通过后台,就可以有过滤,就需要一个Servlet来转发

监听器

监听器Listener,监听一些事件发生,并做一些相应的处理,一般用的不多。

场景:在线人数

监听Session的变化,如果Session创建,则触发,如果有session销毁,则触发

还可以监听Session的属性变化,Request的属性变化,Application属性的变化

登录成功后,Session中有用户信息,退出系统时,要清空当前的Session,释放资源,同时在线人数减1(由工作监听器来完成)

Session的默认有效期:Tomcat30分钟 PHP30分钟

可以通过项目的web.xml配置自己的有效期

还可以在Java代码中通过Session对象的setMaxInactiveInterval

方法设置有效期,单位是s

Java中的设置会覆盖项目web.xml中的session会话的有效期设置

项目web.xml的设置会覆盖Tomcat的web.xml中有关的session会话有效期的设置

Servlet多方法

通过URL或者的method参数来判断是否调用Servlet中的那个方法

Cookie

HTTP协议的一个基本特点:无状态

服务器永远不会主动向客户端发起请求,只是响应,并且服务器不知道上一次访问的是谁,本次访问的又是谁

通过Session和Cookie来实现有状态。Session是发生在服务器,Cookie是发生在客户端,这两个对象都能保存客户的信息。

Session就像服务器中的一个一个的小柜子,里面存放客户的信息及SessionId

Cookie是客户端保存自己的SessionId,以及服务器给我们的信息

客户端每次请求时,都会把SessionId交给服务器,以此来辨别身份

Cookie是由服务端创建的,并有response带回来交给浏览器,由浏览器保存在本地。通过浏览器可以查看Cookie的信息。

Cookie在创建的同时,可以指定它的有效期,比如:关闭浏览器即销毁,或者在本地保存一段时间,或者永久保存在本地。

上传

Apache的上传包

下载两个jar包放入pom

commons file commons fileupLoad

Jsp ,files 创建目录(空目录,mvn不能打包,目录下非空)

下载

见D:xx

Student Teacher

JQuery

后台管理框架,适合做后台管理的项目,他的风格是管理类的页面,和JSOn和AJAX完美集合

AJAX

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

异步的JavaScript和XML

浏览器中有一个引擎,这个引擎可以向服务器发送请求,并且接收响应,而页面不切换,只做局部刷新。如:检查用户名是否可用。

如:级联下拉框的使用,根据一个下拉框动态的决定下一个下拉框中的内容

原生AJAX

IE6,7 ActiveXObject,Other XMLHttpXML Request

XMLHttpRequest 用于在后台与服务器交换数据。

JQuery的AJAX

正则

JQuery

最后

以上就是孝顺彩虹为你收集整理的JavaWebJavaWebTomactServletJSP四大容器九大内置对象状态码过滤器监听器Servlet多方法Cookie上传下载JQueryAJAX正则JQuery的全部内容,希望文章能够帮你解决JavaWebJavaWebTomactServletJSP四大容器九大内置对象状态码过滤器监听器Servlet多方法Cookie上传下载JQueryAJAX正则JQuery所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部