Java Web

JavaWeb

  • 请求和响应
    • 请求
      • 当你在Web浏览器中输入一个URL时,浏览器将根据你的要求创建并发送请求,该请求包含所输入的URL以及一些与浏览器本身相关的信息。
    • 响应
      • 当服务器收到这个请求时将返回一个响应,该响应包括与该请求相关的信息以及位于指定URL(如果有的话)的数据。直到浏览器解析该响应并显示出网页(或其他资源)为止。
    • 常见的状态码
      • 1XX:成功的接收
      • 2XX200成功完成请求的内容
      • 3XX302借钱,304307缓存有关
      • 4XX:客户端有错误404请求的资源不存在(路径) 403有资源没有权限
      • 5XX:服务端出问题
  • HTTP协议
    • 基本概念
      • 无状态协议,通过Internet发送请求消息和响应消息。使用端口接收和发送消息,默认为80端口。
    • 请求头
      • GET方式

      不提交大量数据,无敏感,保密数据时使用。超链接访问默认是GET方法。form提交,不指定method方法,默认为GET方法。form提交,制定方法method="GET",很少使用这种方式。POST方法:需要提交敏感、保密数据,或数据量较大。form提交,指定method="POST"

      • Accept-Charset:浏览器可接受的字符集
      • Accept-Encodingd:浏览器能够进行解码的数据编码方式,比如gzip
      • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到
      • If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304"NotModified"应答
      • POST方式

      • Content-Type说明了请求主体的内容是如何编码的。浏览器始终以application/x-www-form-urlencoded的格式编码来传送数据。
      • Content-Length说明了主体的字节数。
      • 在首部Connection后是一个空行,再后面就是请求主体。与大多数浏览器的POST请求一样,这是以简单的"名称-值"对的形式给出的,其中nameProfessional AjaxpulisherWilery
    • 响应头

      状态行

      • HTTP版本:向客户端指明其可理解的最高版本
      • 响应代码:3位的数字代码,指出请求的成功或失败,如果失败则指出原因。
      • 响应描述:为响应代码的可读性解释。例如:HTTP/1.1 200 OK

      响应头标

      • 像请求头标一样,它们指出服务器的功能,标识出响应数据的细节

      空行

      • 最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标

      响应数据

      • HTML文档和图像等,也就是HTML本身
  • WebXML
    • 作用
      • web.xml文件是用来配置:欢迎页、servletfilter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程

配置

指定欢迎页面

<welcome-file-list>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

<welcome-file>index1.jsp</welcome-file>

</welcome-file-list>

命名与定制URL

为Servlet命名:

<servlet>

<servlet-name>servlet1</servlet-name>

<servlet-class>net.test.TestServlet</servlet-class>

</servlet>

为Servlet定制URL、

<servlet-mapping>

<servlet-name>servlet1</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

定制初始化参数

<servlet>

<servlet-name>servlet1</servlet-name>

<servlet-class>net.test.TestServlet</servlet-class>

<init-param>

<param-name>userName</param-name>

<param-value>Tommy</param-value>

</init-param> <init-param> <param-name>E-mail</param-name> <param-value>Tommy@163.com</param-value> </init-param> </servlet>

经过上面的配置,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值

指定错误处理页面,可以通过"异常类型"或"错误码"来指定错误处理页面

<error-page> <error-code>404</error-code> <location>/error404.jsp</location> </error-page> ----------------------------- <error-page> <exception-type>java.lang.Exception<exception-type> <location>/exception.jsp<location> </error-page>

设置过滤器:比如设置一个编码过滤器,过滤所有资源

<filter> <filter-name>XXXCharaSetFilter</filter-name> <filter-class>net.test.CharSetFilter</filter-class> </filter> <filter-mapping> <filter-name>XXXCharaSetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

设置监听器

<listener> <listener-class>net.test.XXXLisenet</listener-class> </listener>

设置会话(Session)过期时间,其中时间以分钟为单位,假如设置60分钟超时

<session-config> <session-timeout>60</session-timeout> </session-config>

  • JSP
    • 内置对象
      • request

      requestHttpServletRequest类型的对象,可以在JSP中直接通过request调用HttpServletRequest接口中的任何方法。

      • response

      responseHttpServletResponse类型的对象,可以在JSP中直接通过response调用HttpServletResponse接口中的任何方法。

      • session

      sessionHttpSession类型的对象,可以在JSP中通过session调用HttpSession接口中的任何方法

      • application

      applicationServletContext类型的对象,可以在JSP中通过application调用ServletContext接口中的任何方法

      • out

      outJspWriter类型的对象,可以在JSP中调用JspWriter的方法向客户端输出内容。然而,由于<%=%>可以更为便捷地进行输出,因此在JSP文件中往往不使用out对象进行输出。

      • config

      configServletConfig类型的对象,在JSP中可以使用config来调用ServletConfig接口中的任何方法。在web.xml中可以像配置Servlet那样配置JSP。使用配置的url-pattern访问JSP

      • exception

      exception是一个Throwable类型的对象,默认情况下不会生成这个内置对象,当JSP页面被指定为错误页面时,才会有exception这个内置对象。

      • page

      page指代当前的对象,即this

      • pageContext

      pageContext是所有内置对象中最重要的内置对象,是JSP中的上下文对象。

      pageContextjava.servlet.jsp.PageContext类的对象

      很多内置对象通过pageContext对象获取。JSP_jspService方法中总是包含如下部分代码。 application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut();

      所有的内置对象都自动地被添加到pageContext对象中。pageContext也可以存储属性,具有setAttributegetAttributeremoveAttribute方法,可以对pageContext中的属性进行处理

    • 域对象
      • pageContext

      如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

      • request

      如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

      • session

      如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,

      • application

      如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。我们没有说"从服务器启动,到服务器关闭"是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他

    • 静态与动态包含
      • 静态包含

      所谓静态包含,指的是在翻译期间,把包含的页面也翻译到当前页面的Java文件中,所谓java源文件就实现"二合一"

      • <%@include file="copyright.jsp"%>
      • 动态包含

      在运行时,将所需要的class文件导入到当前文件中(分开编译,运行时合并)。

      • <%request.getRequestDispatch(" ").include()%>
      • <jsp:include page="date.jsp" flush="true"/>
  • Servlet
    • 跳转到其他组件的方式
      • 方式

      响应重定向

      • HttpServletResponse中定义了响应重定向的方法sendRedirect(String path).响应重定向是向目标资源重新发送请求,生成新的响应
      • 响应重定向是使用GET方法提交请求,所以调用目的资源的doGet方法
      • 响应重定向生成新的请求,所以当前请求中的数据不会再传到目标资源中,因此,输入用户名和密码后,响应重定向到LoginSuccessServlet,输出的用户名是null

      请求转发

      • 能够吧当前的请求对象转发到目标资源,是最常用的跳转方法
      • 使用请求转发后,当前的请求对象被转发到下一个资源,因此可以得到请求对象中的数据,包括请求参数,请求方法等。在doPost中调用该方法,将调用下一个资源的doPost方法;在doGet方法调用该方法,调用下一个资源的doGet方法
      • request.getRequestDispatcher("LoginSuccessServlet").forward(request, response);
      • 差别

      简单来说,响应重定向是你找我借钱,我没有,我告诉你谁有,你自己再去找他借钱。请求转发是你找我借钱,我没有,我去找其他人借钱,借完了再给你。响应重定向:(1)两次请求。(2)地址栏会发生变化请求转发:(1)一次请求2)地址栏没有变化。

    • 访问方式
      • 通过地址栏访问Servlet
      • 通过超链接访问Servlet
      • 通过表单提交访问Servlet,使用Submit按钮
      • 通过表单提交访问Servlet,使用JS提交
    • 生命周期
      • Servlet是单实例,多线程的
      • 调用顺序

      构造方法

      init方法

      • 默认情况下,在第一次访问Servlet的时候被初始化,而且只初始化一次。
      • 可以在web.xml<servlet></servlet>下进行配置,指定在启动容器的时候初始化

      service方法

      doXXX方法

      destroy方法

      注:第一次通过地址栏调用,控制台输出:构造方法,初始化,doXXX方法。第二次及以后若干次通过地址栏调用,控制台输出doGet()正常关闭Tomcat,控制台输出 destroy()

      • 通常覆盖的方法有init/doXXX
      • request.getRequestDispatcher("LoginSuccessServlet").forward(request, response);
  • cookiesession
    • cookie
      • Cookie是保存在客户端的小脚本,保存的位置分为两种:(1Cookie可能保存在客户端的小文本,关闭浏览器后,Cookie就不再存在

        2Cookie也可能保存在客户PC机的硬盘上,设置有效时间,超过有效时间后失效

    • session
      • 客户端向服务器发送请求,服务端接受请求并生成响应返回给客户端,客户端对服务端这样一次连续的调用过程,被称为会话(session
    • cookiesession区别
      • session是在服务端保存用户信息,Cookie是在客户端保存用户信息
      • session中保存的是任意对象,Cookie保存的是字符串
      • session随会话结束而关闭,Cookie可以长久保存在客户端硬盘上,也可以临时保存在浏览器内存中。
      • Cookie通常用于保存不重要的用户信息,重要的信息使用session保存
  • JDBC
    • 步骤
      • 把数据库的驱动程序包拷贝到WEB-INF/lib
      • 使用Class.forName加载驱动类,每个数据库驱动类不同
      • 使用DriverManager.getConnection获得连接对象,每个数据库的连接串不同
      • 使用Connection中的createStatement方法获得Statement对象,或者preparedStatement方法获得PreparedStatement
      • 使用语句对象中的方法执行SQL语句,查询使用executeQuery方法,增删改使用executeUpdate方法
      • 查询返回ResultSet结果集,使用next方法进行迭代
      • 关闭资源:连接对象,语句对象,结果集对象
  • JavaBean
    • 编码规则
      • 必须是public
      • 必须有一个无参的public构造方法
      • 属性私有化
      • 私有化的属性必须用public方法暴露出来
      • 返回属性的方法为getXxxx()格式
      • 设置属性的方法为SetXxxx(形式参数)格式
    • 作用
      • JavaBean就是遵守规范的Java类,结合JSP的标准动作,可以比较便捷地在JSP之间传递数据,封装数据
原文地址:https://www.cnblogs.com/kexinxin/p/10049787.html