Java Web基础知识

MVC

  1. Model View Controller,模型(model)-视图(view)-控制器(controller)
  2. 用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑
  3. 模型层: 负责模块数据的处理,实际开发时又分为两层(业务和持久),实体类javabean也在模型层
    1. 业务层service,对具体方法进行编写
    2. 持久层DAO(data access object),连接数据库完成数据的序列化
  4. 视图层: 负责客户端数据的展示和收集,html+css+js+jsp等
  5. 控制层: 负责接收客户端发送的请求,根据请求通过servlet或controller调用指定业务

DAO持久层

  1. data access object数据访问对象是一个面向对象的数据库接口
  2. service业务:处理用户请求时,调用具体的DAO方法,执行数据库CRUD方法,并返回结果
    1. PO - persistence Object - 实体对象 - 装载一行数据
      实体对象:用于装载数据库表的一行数据
    2. VO - value object
      值对象:装载直接写入的数据
  3. JavaBean: java中用于封装数据的类,在java中有的专门名称JavaBean;
  4. java中javabean有基本规范
    1. 当前类的名称和所描述的实体名称建议一致,声明为Public
    2. 提供公共无参构造方法
    3. 属性私有化,避免被外界修改,属性要提供getter/setter方法
    4. 属性名称必须遵守camel命名法
  5. jdk提供的反射
    1. 根据字节码(对应java中对象在内存的映像)或对象引用,在运行时对对象进行动态解析的技术
    2. 从字节码对象开始反射的解析
    3. 字节码类型:Class
  6. 得到字节码步骤:
    1. 类名.class: Class dc=Dept.class;
    2. 类的全路径: Class.forName("类的全路径")
    3. 根据对象得到字节码: obj.getClass();
    4. 根据字节码得到对象上的信息

JDBC

  1. Java DataBase Connectivity, java数据库连接
  2. 用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
  3. 加载JDBC过程:
    1. 加载数据库jdbc驱动到内存
    2. 完成应用程序与数据库的连接(桥梁)
    3. 在桥梁上生成一个处理数据的对象(车)
      java-车(sql语句)-数据库(执行sql语句)-车(sql语句结果)-java
  4. 返回类型:
    1. DML语句 - 增删改 - 影响数据库表记录的行数(返回数字)
    2. DQL语句 - 查询 - 返回结果集(虚拟表)
  5. 加载mysql驱动方法
    1. Class.forName(driver);alt+/自动导包
    2. 项目下按包查找maven-mysql-jdbc-driver复制包路径
    3. data source explorer里查看属性找到class driver复制包路径
  6. 布置mysql环境
    1. maven中pom.xml中加载mysql
    2. window下显示data source explorer窗口找到database connections
    3. 新建查找到mysql,通过.m2文件夹内的mysql.jar导入
    4. 连接虚拟机中安装的数据库,端口号3306,选择要导入的数据库
    5. 输入数据库用户名密码保存
  7. java属性文件的特点
    1. 扩展名.properties
    2. 内容以键=值,回车换行,注释以#开头
    3. 中文要以UNICODE码存储,否则不能读取
  8. 通过文件名获取文件物理路径
    InputStream is = this.getClass().getClassLoader().getResourceAsStream(“db.properties”);
    Properties p=new Properties();
    p.load(is);
  9. 属性文件的意义
    1. 将属性文件和可执行java.class文件放在最终的文件夹中
    2. 目的在于在java程序的时候,也可以修改代码中的参数,如新IP地址等

servlet

  1. Server Applet,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容
  2. 广义的Servlet是指任何实现了这个Servlet接口的类
  3. javaEE体系
    1. 基础(javaSE)
    2. web模块(jsp/servlet)
    3. 数据库才做(jdbc)
    4. 远程通讯(RMI远程方法的调用实现RPC协议)
      RPC远程过程调用协议,通过网络从远程计算机上请求调用某种服务
    5. JMS(java消息服务),java平台中关于面向消息的中间件
    6. WebService(网络服务),是一个平台独立的,低耦合的,自包含的,基于可编程的web的应用程序,可使用开放的xml标准来描述,发布,查询,协调和配置这些应用程序,广泛用于分布式互操作的应用程序开发,如天气服务whteatherwebservice
    7. JNDI(java命名目录接口),同名部署并发布资源名称,java项目可以通过JNDI提供的API接口访问外部资源
    8. EJB(Enterprise JavaBeans),javaEE服务器端组件模型,耦合度过高
    9. Java Transaction API,处理分布式事务
    10. Java TransactionService,组件事务监视器
  4. web模块
    1. 基于B/S结构工作模式,前端使用浏览器Browser,后端使用支持HTTP协议的服务器Service,工作方式基于请求request和响应response
    2. web服务器提供了能够在不同范围存储数据的能力,对于javaweb服务器要求必须安装JVM
    3. web服务器(Tomcat免费,端口8080),特点:
      1. 以JVM为基础
      2. 支持HTTP
      3. 支持多线程
      4. 能够存储http传来的数据
  5. java中web服务器又称为jsp/servlet的容器,否则后者无法运行
    1. jsp:负责显示
    2. servlet:负责控制
    3. service:负责业务
    4. jdbc:负责调用数据库
创建一个servlet
  1. 创建servlet类,继承 HttpServlet父类 ,重写doGet,doPost或service方法
    HttpServlet支持http协议,对于多客户端的请求,在容器执行时自动进行多线程的创建
    1. doGet方法用于处理Get请求
    2. doPost方法用于处理Post请求
    3. service方法用于处理两种请求(不常用,无法区分请求方式)
  2. 修改描述文件web.xml,添加servlet映射,servlet2.5以上版本支持注解方式配置
  3. 启动服务器后,通过浏览器地址调用servlet的url映射
  4. 当浏览器通过get/post方式传来一个http的请求时,tomcat会找项目部署,无则返回404错误
  5. 扫描对应url项目时,先扫描web.xml文件,找寻servlet并执行
servlet配置
  1. servlet基础信息部分
    <servlet></servlet>
    servlet-name,描述唯一标识
    servlet-class,添加自定义servlet类的全路径(带包名的路径)
    <servlet-mapping></servlet-mapping>
  2. servlet对应url映射部分
    servlet-name,对应基础部分的名称
    url-pattern,对应客户端请求的url映射,必须以/开头,名称任意
    http://localhost:8888/映射名称 跳转到servlet的映射的类
    1. 配置servlet启动顺序
      <load-on-startup>整数</load-on-startup>//按整数从小到大启动
    2. 配置给servlet传递的初始化配置信息
      <init-param>...</init-param>//…中包括:
      <param-name></param-name> //参数名
      <param-value></param-value> //对应值(字符串)
    3. 流程:首先扫描基础部分的名称和类存入内存,再扫描url映射部分找到映射名称,找到内存中对应名称下的类实例化后执行
servlet生命周期
  1. 创建实例 :当servlet首次被调用时,在web容器JVM栈中创建servlet对象,仅执行一次
  2. 初始化 :调用servlet固有方法init(ServletConfig)实现初始化,首次访问servlet,使该对象与web容器配置进行交互,仅执行一次
  3. 服务 :调用servlet中service()方法,对应客户端的每次请求,根据用户请求类型将请求流分发给get或post,每次都执行
  4. 销毁 :调用servlet中destroy()方法,web容器正常终止时调用,用于处理多余的垃圾文件
  5. servlet功能
    1. 多重映射
      1. servlet在web配置中,可以配置成多路径或模糊查询的路径形式
      2. 多重映射指配置多个url-pattern都可以访问同一个目标,可以通过类上@或在web.xml中添加相同servlet-name下多个不同url-pattern
    2. web容器
    3. 当客户端向web容器发送请求时,web容器请求信息经过对HTTP协议解析后,参数信息会形成键值对(仅传递字符)存储在本地缓冲,该缓冲会形成request区域的缓冲池,该缓冲池会调用对应url映射的servlet或jsp时,将request区域中的键值对传递给HttpServletRequest对象
    4. 返回客户端浏览器的内容,web容器对应HttpServletResponse对象进行输出的接口,通过该接口形成输出流,通过向该流写入内容,在客户端浏览器中下载该流生成的指定形式的代码
Servlet在MVC中的作用
  1. 处理客户端请求的数据
  2. 调用业务bean中的方法
  3. 保存模型数据,来自于客户端或业务bean产生的数据
  4. 跳转
Servlet处理客户端请求的数据
  1. 重写父类HttpServlet中doget,dopost方法,通过方法中第一个参数request对象从web容器中接收客户端请求数据
  2. 解决中文乱码:
    eclipse中修改显示的字符集为UTF-8方法:
    1. window->preferences->general->content types->java source file->default encoding:UTF-8
    2. window->preferences->general->workspace->text file encoding:other:UTF-8
  3. 由于http协议内部字符集使用ISO-8859-1(西欧标准字符集),在web中转换的方法有三种:
    1. 针对post类型请求的数据:
      1. 将request对象,调用setCharacterEncoding(“要转换的字符集”)方法,必须与客户端编码保持一致
        request.setCharacterEncoding(“UTF-8”);
      2. 中文字符集:GBK,GB2312,UTF-8,BIG5
    2. 适合get和post请求的数据
      1. 得到用户传递的参数返回字节数组
        byte[] by=xname.getBytes(“ISO-8859-1”);
      2. 将字节数组按指定的字符集,重新组合成字符串
        String str=new String(by,”UTF-8”);
    3. 针对get类型请求的数据
      1. 修改server.html文件,可实现doget方法内不转码也是UTF-8字符集
get和post的区别
  1. Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;
  2. Get 将表单中数据按照variable=value 的形式,添加到action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将 表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action 所指向URL;
  3. Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的 所有操作对用户来说都是不可见的;
  4. Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;
  5. Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;
  6. Get 是Form 的默认方法
Servlet在MVC中保存模型数据
  1. http协议本身为无状态协议,web容器提供了不同范围存储区,能弥补http无法保存数据的缺点
  2. web容器包括request缓冲区,普通的堆栈,存储区
  3. 发来的请求首先进入request缓冲区:
    1. 需要处理的数据通过request.getParameter(“组件name名”)处理数据
    2. 需要存储的数据存储到存储区中
存储区
  • 存储区特点:
    1. 存储区之间是隔离的
    2. 存储范围不同
    3. 与系统并用物理内存
  • 存储区分三块存储范围,32位系默认分配4G/块
    1. request (针对一次请求,转发后关闭)
      存储周期小,转发后则清空
      用于数据展示
    2. session (一次会话,会话结束后关闭)
      安全,存储周期长,数据量过大
      用于登录信息等数据保存
    3. application (一次应用,服务器关闭后关闭)
      服务器不关闭则一直存在,不安全,如网络聊天室,多客户端可以用同一个服务器交互,每个客户端都可见服务器接收的数据
  • 存储范围的用法:
    1. 存储数据:
      存储范围对象.setAttribute(“标识键”,object);
    2. 获取数据:
      object val=存储范围对象.getAttribute(“标识键”,object);
Servlet在MVC中的跳转
  1. 重定向:
    1. 向request存储范围中存储数据语法:request.setAttribute(“存储页面”, object);
    2. 重定向语法:response.sendRedirect(“跳转的页面”);
    3. 跳转的页面接收缓冲区数据语法:request.getAttribute(“存储页面”);
    4. 客户端
    5. 两次请求
    6. 地址栏改变
    7. 不同服务器下
    8. 可以访问站外资源
    9. 不可用request传值
  2. 转发:
    1. 存储和接收数据语法同重定向
    2. 转发语法:request.getRequestDispatcher(“跳转的页面”).forward(request, response);
    3. 服务器
    4. 同一次请求
    5. 地址栏不变
    6. 同一台服务器下
    7. 只能访问站内资源
    8. 可用request传值

Tomcat

  • 一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选
    1. 在linux环境下配置tomcat
    2. 安装jdk,配置JAVA_HOME,PATH
 修改/etc/profile
       JAVA_HOME=,CLASSPATH=,PATH=,export JAVA_HOME PATH
        JAVA_HOME=/usr/java/jdk1.8.0_144
        JRE_HOME=/usr/java/jdk1.8.0_144/jre
        CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
        PATH=$JAVA_HOME/bin:$PATH
        export JAVA_HOME JRE_HOME CLASSPATH PATH
        PATH=/usr/local/mysql/bin:$PATH
        PATH=/usr/local/apache-tomcat-7.0.82/bin:$PATH
export PATH
  1. 解压tomcat并安装
    1. yum install -y zip unzip //安装压缩和解压软件,unzip解压命令
    2. mv apache-tomcat-7.0.82/ /usr/local/
    3. 项目部署目录/webapps,日志文件目录/logs
    4. 修改/bin下所有.sh文件为可执行权限chmod a+x ./*.sh
    5. 添加/bin到PATH
    6. source /etc/profile 刷新PATH
  2. 关闭防火墙
    systemctl stop firewalld.service
    systemctl disable firewalld.service
  3. 启动tomcat服务并测试
    1. startup.sh 启动服务
    2. netstat -ano|grep 8080 查看端口
    3. http://10.25.50.156:8080/ 登录已启动的tomcat服务器
  4. 编辑xml文件
    /usr/local/apache-tomcat-7.0.82/conf/tomcat-users.xml
  5. eclipse配置tomcat远程部署
    • 编辑远程tomcat服务器下的conf/tomcat-users.xml末尾添加:
      <role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <user username="tomcat" password="123456" roles="manager-gui"/>
        <user username="both" password="123456" roles="manager-gui,manager-script"/>
        <user username="ping" password="123456" roles="manager-script"/>
  • 在tomcat服务器的./conf/Catalina/localhost/目录下创建一个manager.xml文件,写入:
       <?xml version="1.0" encoding="UTF-8"?>
        <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
        </Context>
  • 在maven中添加tomcat插件
    1. 在pom.xml中添加中添加插件
      maven-resources-plugin 资源文件拷贝插件
      maven-compiler-plugin java编译插件
      tomcat7-maven-plugin tomcat插件
      <path>/${project.artifactId}</path>表示主页改为追加/当前项目名;如果只写/则表示输入http://localhost:8888/ 就是主页
    2. 载入插件并启动服务器
      run as -maven build…在 中写入命令tomcat7:run
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值