Tomcat下载地址www.apache.org

在电脑中查看java版本:cmd中输入java -version

tomcat解压后目录

bin:放可执行文件(如startup.bat   shutdown.bat)

conf:放配置文件(server.xml)

lib:放tomacat 依赖的jar文件包

log:放日志文件(记录出错等信息)

temp:放临时文件

webapps:放可执行的项目(将我们开发的项目放入该目录)

work:存放 由jsp翻译成的java,以及编译成的class文件。

jsp--.java(servlet文件)---.class   写完jsp后,运行时产生两个文件(.java,.class)这两个文件会放到work文件夹下

jsp和servlet可以相互转换

因为第一次请求服务端会有翻译和编译的过程,因此比较慢,后续访问可以直接访问class,因此速度快。但是如果服务端修改代码,则再次访问时,会重新的翻译和编译

2.配置tomact

a.配置jdk (必须配置JAVA_HOME)

java_home classPath path

b.配置catalina_home

点击电脑/计算机右击属性---高级系统设置--高级--环境变量--系统变量里新建(变量名CATALINA_HOME ,变量值为tomacat根目录的路径(点击tomact进去后,复制里面的路径)),可以在bin文件夹下点击startup.bat 来查看是否配置成功,如果打不开或者闪退则配置不成功

双击bin/ startup.bat 启动tomacat,常见错误:可能与其他服务的端口号冲突了

tomacat端口号默认为8080(此端口较为常见),建议修改此端口(8888)

修改端口号:在tomacat文件夹下conf文件夹下server.xml文件里,将8080改为8888,改完后回到bin下点击startup.bat 重新启动

3.访问tomacat

http://localhost:8888/

常见状态码

200:一切正常

300/301:页面重定向(跳转)

404:资源不存在

403:权限不足(如果访问a目录,但是a目录设置 不可见)

500:服务器内部错误(代码有误 )

其他编码:自己积累

4.虚拟路径配置

5.虚拟主机

6.jsp执行流程

7.jsp动态网页

1.不用和是否有“动感”混为一谈

2和.是否随时间,地点,用户操作的改变而改变有关

动态网页需要使用到 服务端脚本语言(jsp)

8.BS/CS架构

CS:Client Server

CS不足:

a.如果 软件升级,那么全部软件都需要

b.维护 麻烦,需要维护每一台 客户端软件(假设有6亿人上qq,任何一台计算机坏了,这个qq都用不了,或者任何一台qq 它和它计算机里的一个软件冲突了,这个qq就坏了,任何一台qq坏了都需要重新去维护它,很麻烦)

c.每台客户端都需要安装客户端软件

BS:  Broswer Server(客户端可以通过浏览器直接访问服务端)

典型的有网页版的京东,百度。

怎样访问京东的网页版?

答:客户端里只需要安装一台浏览器(IE/firefox/chrome),我们现在只需要浏览器去访问服务器就可以了

BS优点:

a.升级不再麻烦了(如 双十一了,京东需要将网页进行改造 ,则客户端就不需要管了不用升级直接访问就行了,即服务端自己升级,客户端不需理会可以直接访问)

b.维护不麻烦了(客户端只要有浏览器,你的京东就不会坏,只要服务器不坏 ,就都可以访问)

c.不需要安装客户端软件了(京东软件),只需要浏览器就可以访问

注:bs,cs各有优势(一般来说cs比较美观,且cs客户端 响应比较快)

9.eclipse中创建的web项目

10.配置tomacat运行时环境(如果jsp页面第一行出现错误,则可能是tomacat运行时环境没有配置)

a.  将tomacat/lib中servlet-api.jar复制到项目中src下,右击--build path--add to build path

b.右击项目build path-libraries-add library-server runtime-next-选择tomacat-finish

11.部署tomacat

在servers面板新建一个tomacat实例,再在该实例中部署项目(右击-add)之后运行

注意:一般建议将eclipse中的tomacat与本地的tomacat的配置信息保持一致:将eclipse中的tomacat设置为托管模式,即第一次创建 tomacat'实例后,双击该实例,选择server location第二项。这样保证了eclipse中的tomacat配置与本机中的tomacat配置保持一致

12.统一字符集编码

a.编码分类

设置jsp文件的编码(通过jsp文件中的pageENcoding属性):jsp-->.java(在翻译的过程中是以什么方式编码的)

设置 浏览器读取jsp文件的编码(通过jsp文件中的content属性)

一般将上述设置成一致的编码,推荐使用UTF-8

文本编码:1.将整个eclipse中的文件统一设置(推荐用这个)

2.设置某一个项目。右击项目-属性

3.设置单独文件的。右击文件-属性

13.jsp页面元素:html  java代码(脚本Scriptlet)   指令    注释

a.脚本Scriptlet

i.  <%

局部变量,java语句

%>

ii.<%!

全局变量,定义方法

%>

iii.<%=输出表达式%>

一般而言,修改web,xml,配置文件,java 需要重启tomacat服务

但是如果修改jsp\html\css\js不需要重启

b.指令

如page指令

<%@page....%>

page指定的属性:

language:jsp页面使用的脚本语言

import:导入类

pageEncoding:jsp文件自身编码   jsp---〉java

contentType:浏览器解析jsp的编码

c.注释

html注释<!-- -->  可以被浏览器客户端通过右击查看源代码查看到

java注释//        /*...*/

jsp注释<%-- ---%>

14.jsp9大内置对象(自带的,不需要new也能使用的对象)

out:向客户端输出内容

pageContext:

request:请求对象,存储“客户端向服务器发送的请求信息”

request对象常见方法:

String getParameter(String name):根据 请求的字段名key,返回字段值value(input标签的value属性值),即根据name属性值,拿到的却是value属性值

String[]  getParameterValues(String name):根据 请求的字段名key,返回多个字段值value(checkbox)

其中真正拿值的是value中的值,<input>后面的值是给用户看的

void setCharacterEncoding("编码格式utf-8"):设置post方式的请求的编码(不设置则默认,tomacat7以前默认iso-8859-1,tomacat8以后改为了utf-8)

getRequestDispatcher(“B.jsp”).forward();   :请求转发的方式跳转页面A--->B

ServletContext getServerContext():获取项目的ServletContext对象

response:响应对象

提供的方法

void addCookie(Cookie cookie):服务端向客户端添加cookie对象

void sendRedirect(String location)throws IOException页面跳转的一种方式(重定向)

重定向会导致数据丢失,而请求转发可以获取数据并且地址栏没有改变(仍然保留转发时的页面)

void setContentType(String type):设置服务端响应的编码(设置服务端的contentType类型)

session:

application

config

page

exception

14.get,post提交方式

get提交方式:method=“get”和地址栏,超链接请求方式默认都属于get提交方式

get,post请求方式区别:

a.get方式 在地址栏显示  请求信息(但是地址栏能够容纳的信息有限,一般是4-5kb,如果请求数据存在大文件,图片等会出现地址栏无法容纳全部的数据而出错),而post则不会显示,所有说get方式不安全。如会暴露密码等信息

b.文件上传操作,必须是post

推荐使用post方式

15.统一请求的编码request(请求方式不一样,编码也不一样)

如我用的是tomacat7版本默认编码是iso-8859-1,而我的jsp中contentType="text/html;charset=UTF-8"二者编码不统一,则出现乱码

get方式如果出现乱码,解决:

a.统一每一个变量的编码  (不推荐)

用 new String(旧编码,新编码)修改

b.修改server.xml,一次性的更改tomacat默认get提交方式的编码(比如改为UTF-8)

建议使用tomacat时,首先在server.xml统一get方式的编码

post方式:request.setCharacterEncoding("UTF-8");

16.请求转发(服务端内部跳转)与重定向(返回客户端,客户端重新发起一次跳转)的区别

a.地址栏是否改变,请求转发不变(如原来的页面是check.jsp,转发后跳转到sucess.jsp,但是请求转发时地址栏还是check.jsp,而重定向时地址栏变为sucess.jsp),重定向改变

注:因为请求的次数,请求转发时一次,重定向是2次,所以请求转发地址栏不变,重定向改变

b.是否保持第一次请求时的数据(数据是否能带到下一页),请求转发保留,重定向不保留

c.请求的次数,请求转发时一次,重定向是2次

d.跳转发生的位置,请求转发是在服务端,重定向是客户端发出的第二次跳转

例子:

张三(客户端)去银行办理业务,要请求一个窗口-------------->服务窗口A(服务端)办理事情

如果是请求转发:这个服务端A办不了,但是该服务端A可以搞定,我的同事可以帮你搞定,即内部搞定,将张三的业务转给了它的同事服务窗口B,但是这个跳转张三不需要知道,张三只要找到服务端A就可以了,所以地址栏不变

如果是重定向,服务端A办不了,但是告诉张三我办不了,找服务端B去

张三再次发出请求找服务端B

第一次请求窗口A,第二次请求窗口B,所以明显窗口变了,所以地址栏会改变

17  cookie(存在客户端),不是内置对象,需要new

cookie 是由服务端生成的,再发给客户端保存

如上网电影,客户端去访问服务端,第一次访问,访问完毕以后,服务端就会产生一个cookie,把这个cookie保存在客户端(作用:第一次看电影需要用网络流量,看完后服务端将你看完的电影放在cookie里,发送给客户端。这样下次再看就可以直接从本机中观看,提高效率)

相当于本地缓存的作用:客户端----->服务端

cookie作用:提高访问服务端的效率,但是安全性较差

Cookie:key/name---value

cookie对象是由java.servlet.http.Cookie类产生的

这个类或者对象有的方法

public  cookie(String key/name,String value)

String  getName()

String getValue()

void setMaxAge(int expiry)//设置最大有效期(秒)

服务端怎么将cookie发给客户端?

a服务端准备cookie:借助于内置对象response,   response.addCookie(Cookie cookie)

b.页面跳转(转发,重定向)将cookie给了客户端

c.客户端获取cookie:request.getCookies();//获取的是所有cookie

注:服务端增加cookie:response对象,客户端获取对象:request

不能直接获取某一个单独对象,只能一次性将全部的cookie拿到

通过F12可以发现  除了自己设置的cookie对象外,还有一个name为JSESSIONID的cookie

例如:cookie存储用户名zs

将客户端中的cookie取出来

.session(存在服务端),是内置对象

会话   例如a.浏览网站:开始---关闭

b.购物:浏览、付款、退出

c.电子邮件:浏览、写邮件、退出

从一次开始到一次结束

Session机制(原理):

服务端会在你第一次请求时,创建一个session,这个session会自带一个sessionID并且是唯一的(Session产生的同时会自带一个sessionID),然后会把sessionID的值复制一份,给JSESSIONID,然后会把JSESSIONID的值放在cookie里去,在响应时将这个cookie发给客户端,客户端就JSESSIONID了,和刚刚的JSESSIONID一一对应,也就是说我服务端和客户端是通过cookie和session对应起来的,cookie里面JSESSIONID和session里面sessionID两个相对应

服务端的sessionID和客户端的JSESSIONID一一对应用户区分客户

客户端第二次/n次请求服务端时:服务端会先根据客户端cookie中的JSESSIONID去服务端的session中匹配sessionID,如果匹配成功(cookie的JSESSIONID和session的sessionID的值是否一样),说明此用户不是第一次访问,就无需再次登录。

javaweb常识的更多相关文章

  1. javaweb笔记—01(编程英语、常识、Tomcat配置问题)

    第一部分: 编程英语: legal:adj. 法律的:合法的:法定的 Userful :出版商  sponsor: n. 赞助者:主办者:保证人 | vt. 赞助:发起 essential:n. 本质 ...

  2. javaweb开发.eclipse使用小常识

    一.javabean快速生成 1.写好属性,如 package me.lst.domain; import java.io.Serializable;import java.sql.Date; /** ...

  3. 什么是AJAX技术及其常识

    1.什么是Ajax? Ajax的全称是:AsynchronousJavaScript+XML 2.Ajax的定义: Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个 ...

  4. Javaweb项目中文乱码

    Javaweb项目中文乱码 一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat: ...

  5. 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)

    在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...

  6. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  7. JavaWeb——Listener

    一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...

  8. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  9. javaWeb应用打包

    在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

随机推荐

  1. leetcode 55. Jump Game、45. Jump Game II(贪心)

    55. Jump Game 第一种方法: 只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break class Solution { public: bool canJump(vecto ...

  2. nineoldandroids开源库

    Android3.0 推出AnimationAPI ,使用起来比较方便,但是不能再3.0以下版本中使用.nineoldandroids开源库可以在任意版本上使用,官网地址:http://nineold ...

  3. 5G && 物联网

    可打电话的 2G.能够上网的 3G.满足移动互联网用户需求的 4G 相比,逐步可以商用的 5G 在多重性能上更胜一筹,如 高数据率: 低延迟: 更节能: 有效地降低通信成本: 具备更高的系统容量: 更 ...

  4. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_01-Eureka注册中心-Eureka介绍

    1 Eureka注册中心 1.1 需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中 心来管理微服务信息. 为什么 要用注册中心 ...

  5. ireport如何拼接sql?

    ireport如何拼接sql   ireport如何拼接sql? 解决方法: 1.ireport的sql select * from emp as e $P!{whereSQL}; 2.java代码 ...

  6. OpenStack Heat模板内部函数

    Heat模板内部函数又称为Intrinsic functions. 注:Intrinsic functions只能用在 resource 的 properties 段 和 outputs 中.    ...

  7. MySQL5.1中文文档学习笔记——第1章:一般信息(一)

    原文地址 MySQL软件是一种开放源码软件. 开放源码"意味着任何人都能使用和改变软件.任何人都能从Internet下载MySQL软件,而无需支付任何费用.如果愿意,你可以研究源码并进行恰当 ...

  8. 欧姆龙NX1P 输送马达功能块

    一个简单的马达输送轨道功能块,需要的小伙伴可以参考下,个人能力有限,不足的地方还请包涵. 下载链接:https://pan.baidu.com/s/1V1gioE0boDpaUsR5cqQ5dg

  9. Work? working!

    0.总要想想为什要做这个(目的是什么,优缺点,必要性,不用行不行,产品定位,如何保证最后的稳定性) 1.如何逐步排查问题所在(做实验+分析排查:不同的实验手段) 2.如何利用网络(搜索问题的所在,确定 ...

  10. Linux 线程取消(pthread_cancel)

    基本概念 pthread_cancel调用并不等待线程终止,它只提出请求.线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint).取消 ...