javaweb小结2

Tomcat服务器端口

  Tomcat所有配置都在conf文件夹下,server.xml是核心文件
   <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  可以直接在此修改端口号, 但必须重启后才能生效.

 

Tomcat服务器虚拟目录映射

  • 方法一: 在server.xml文件的host元素配置(不推荐,须重启)

  <Host name="localhost"  appBase="webapps"
             unpackWARs="true" autoDeploy="true"
             xmlValidation="false" xmlNamespaceAware="false">

         <Context path="/JavaWebApp" docBase="F:JavaWebProjectTest" />
</Host>

path:用来配置虚似目录,必须以"/"开头

docBase:配置此虚似目录对应着硬盘上的Web应用所在目录

目的: 将在F盘下的JavaWebDemoProject这个JavaWeb应用映射到JavaWebApp这个虚拟目录上.访问地址 localhost:8080/JavaWebApp/hello.xml

 

  • 方法二: tomcat自动映射

tomcat会自动把webapps下所有web应用映射成虚拟目录,供外界访问.

 

  • 方法三: 在confCatalinalocalhost目录下添加一个以xml作为扩展名的文件

比如建一个apple.xml,内容为<Context docBase="F:JavaWebProjectTest" />,那么访问地址为 localhost:8080/apple/hello.xml

和方法一类似, context元素的path属性源自于是这个xml文件的名字,docBase是硬盘上的目录.

该方法无须重启Tomcat服务器

 

Tomcat配置虚拟主机

  <Host name="www.myTest.cn" appBase="F:JavaWebApps">
</Host>

浏览量输入一个域名后访问, 它会映射成IP地址访问, 先本地找域名的映射(windows是在C:WindowsSystem32driversetchosts),如果本地没找到,再从DNS(域名系统)找,只有找到了才能访问,否则无法访问.

 

 

将JavaWeb应用打包成war包,将这个war包放到Tomcat服务器的webapps目录下,当Tomcat服务器启动时,就会自动将webapps目录下的war包解压

 

 

HTTP协议

hypertext transfer protocol(超文本传输协议)

它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程

 

在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源.

在HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源.

 

一个完整HTTP请求: 一个请求行,若干消息头,实体内容

  • 请求行: 请求方式最常用的get,post

    get: 高效,不安全,参数有限制

      post:
  • 消息头:

 

Maven坐标

  • groupId : 包名(当前maven项目隶属的实际项目)

  • artifactId :项目名称( 当前实际项目中的Maven模块)

  • version : 使用构件的版本

  • packaging : 项目的打包方式(常见jar和war)

  • scope : 用来控制依赖和编译

    ①compile,缺省值,适用于所有阶段,会随着项目一起打包发布.

      ②provided,类似compile,期望JDK,容器或使用者会提供这个依赖,不会被打包.

    ③runtime,只在运行时使用

    ④test,只在测试时使用,只在测试编译和测试运行阶段可用,不会随项目发布

    ⑤system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它.(不推荐使用)

 

Servlet接口 源码解析

  public interface Servlet {
   // 当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用
   public void init(ServletConfig config) throws ServletException;
   
   //返回ServletConfig对象, 包含Servlet初始化参数信息
   public ServletConfig getServletConfig();
   
   //每当请求Servlet时,Servlet容器就会调用这个方法
   public void service(ServletRequest req, ServletResponse res)            throws ServletException, IOException;
   
   //返回字符串, 包含servlet创建者,版本,版权等信息
   public String getServletInfo();
   
   //销毁Servlet时调用,释放Servlet对象占用的资源
   public void destroy();
}

 

GenericServlet抽象类 ,为Servlet接口中的所有方法提供了默认的实现

HttpServlet抽象类是继承于GenericServlet抽象类

 

HttpServlet源码解析

  //将ServletRequest类型对象转换为HttpServletRequest类型对象
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
   HttpServletRequest request;
   HttpServletResponse response;
   try {
       request = (HttpServletRequest)req;
       response = (HttpServletResponse)res;
  } catch (ClassCastException var6) {
       throw new ServletException("non-HTTP request or response");
  }

   this.service(request, response);
}

//解析HttpServletRequest的方法参数,分别调用7中不同方法doGet,doPost,doHead等等
//如果继承HttpServlet并实现具体逻辑时,则不需要覆盖service方法了,只需要覆盖7种doXX方法(实际使用中常用的只有doGet和doPost)
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   String method = req.getMethod();
   long lastModified;
   if (method.equals("GET")) {
       lastModified = this.getLastModified(req);
       if (lastModified == -1L) {
           this.doGet(req, resp);
      }else{
           //省略
      }
  }
   //省略
}

 

HttpServletRequest接口

  public interface HttpServletRequest extends ServletRequest {
   public String getAuthType();
   //返回一个cookie对象数组
   public Cookie[] getCookies();
   //返回与这个请求相关的会话对象
   public HttpSession getSession();
   //返回指定HTTP标题的值
   public String getHeader(String name);
   //返回生成这个请求HTTP的方法名称
   public String getMethod();
   //返回请求上下文的请求URI部分
   public String getContextPath();
   //......
}

 

Cookie 是客户端技术,程序吧每个用户的数据以cookie的形式写给用户各自的浏览器

 

JavaBean

JavaBean是一个遵循特定写法的java类:

  必须具有一个无参构造函数.

属性必须私有化.

私有化属性必须通过public类型的方法暴露给其他程序,并且方法的命名遵循约定规范

 

JavaBean的属性可以使任意类型,并且一个JavaBean可以有多个属性.

每个属性一般都需要具有相应的setter方法(属性修改器),getter方法(属性访问器)

 

 

 

JDBC(Java Data Base Connectivity)

java数据库连接: 用于执行SQL语句的Java API.

  1. Driver接口

    Class.forName("com.mysql.jdbc.Driver");

      Class.forName("oracle.jdbc.driver.OracleDriver")
  2. Connection接口

    Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");

    Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database", "user", "password");
  • createStatement() 创建向数据库发送预编译sql的statement对象.

  • prepareStatement(sql) 创建向数据库发送预编译sql的PrepareStatement对象.

原文地址:https://www.cnblogs.com/ShyPeanut/p/13857138.html