java web 基础学习步骤.docx
- 文档编号:10428206
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:15
- 大小:20.98KB
java web 基础学习步骤.docx
《java web 基础学习步骤.docx》由会员分享,可在线阅读,更多相关《java web 基础学习步骤.docx(15页珍藏版)》请在冰点文库上搜索。
javaweb基础学习步骤
目标:
B/S架构的特点:
基于请求和响应
Web服务器的功能:
接受请求
查找资源,处理请求
返回结果
Tomcat:
Tomcat目录结构:
bin:
放置控制Tomcat运行的命令(shutdow.bat,startup.bat)
conf:
放置的是Tomcat的配置文件,需要改变Tomcat运行环境的时候需要修改这些配置文件(server.xml,web.xml,context.xml)
lib:
防止Tomcat在运行的时候使用的和可以支持的jar文件
logs:
放置日志
temp:
临时文件
webapps:
放置应用程序
work:
放置web应用程序的转换代码
Tomcat运行方式:
简单的方式-->可以直接通过Eclipse的配置来管理
Eclipse的配置方法:
(1)配置服务器环境
(2)部署项目到服务器
注意:
web项目的目录结构:
WebRoot目录:
web访问的跟目录
WEB-INF目录:
大小写固定不能更改
lib目录:
放置运行时需要的jar文件
web.xml文件:
配置当前应用程序的环境
(3)部署应用程序到Tomcat的webapps目录下
(4)运行服务器,访问应用程序
访问服务器的路径:
http:
//localhost:
8080/
访问服务器资源:
http:
//localhost:
8080/项目名/资源名
jsp页面的处理过程:
(1)第一次访问
xx.jsp-->xx_jsp.java-->xx_jsp.class
由tomcat服务器负责代码的转换,以及负责实例化xx_jsp.java对象并且调用xx_jsp.java中的xxService方法
(2)第一次之后再次访问
直接访问xx_jsp.class
由tomcat服务器负责实例化xx_jsp.java对象并且调用xx_jsp.java中的xxService方法
注意:
两次的产生的对象是同一个,因为tomcat采用单例模式来处理对象的生成
JSP的组成:
1、jsp指令:
以“<%@”开始,以“%>”结束。
一个jsp页面至少需要一个指令:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
page指令:
表示当前页面默认运行环境
除了page指令外还有include和taglib指令
include指令:
包含指令,可以使当前页面可以包含其他页面内容
taglib指令:
引入标签库指令
2、表达式:
<%=Java表达式%>-->页面输出
<%=Java表达式%>等同于out.println();
注意:
不要加分号
3、小脚本:
<%Java代码%>
存在于jsp编译的后java中的service方法中
所以可以放置:
变量的定义必须赋值,变量的使用,方法的调用,程序逻辑
4、声名:
<%!
方法%>
存在于jsp编译的后java中类中不在任何方法里
所以可以放:
变量的定义,方法的定义,块的定义
5、动作:
“ 动作名”开始,以“
动作名>
a、 forward>跳转地址
forward>:
请求转发
b、 include>包含地址
include>:
引如入其他页面内容到本页面
include>: 动态引入,引入动态页面(.jsp),原因是引用页面和被引用页面会生成不同的java文件,可以使用同名变量,编译速度慢 <%@include%>: 静态引入,引入静态页面(.html),原因是生存 java文件会把所有的页面(引用和被引用的页面)都包含在一起,所以不允许出现同名变量定义,编译速度快 c、一组 useBean>....: 处理javabean 6、注释: a、HTML注释: 会出现在被编译后的java代码中,也会出现在客户端 b、JSP注释: 不会出现在被编译后的java代码中,不会出现在客户端 c、java注释: 会出现在被编译后的java代码中,不会出现在客户端 JSP的javaBean的操作动作 useBean> useBeanid=""class=""scope="page"> useBean> id: 实例化后的对象名 class: javaBean的完整路径 scope: javaBean对象的存储范围 作用范围: page: 只在本页面有效 request: 在一个请求中有效 session: 在一次会话中有效 application: 在一次服务有效 useBean运行原理: 先检查对应作用域中是否已经存在有实例化的对象,如果存在,直接使用已经存在的实例,如果没有在根据class中的路径,实例化新的对象,再把新对象存如作用域 setProperty> 写法1: setPropertyname=""property=""value=""/> name: javabean的对象名 property: name属性名会通过反射找到对应的set方法进行赋值 value: 存的值 写法2: setPropertyname="stu"property="*"/> 注意: 要求表单控件的name属性值必须和javabean属性值一一对应 写法3: setPropertyname="stu"property="name"param="sname"/> name: javabean的对象名 property: javabean的属性名 param: 表单控件的name名称 getProperty> 回顾: JSP动作: javabean操作: usebean>: 实例化javabean usebeanid="实例名"class="类的完整路径"scope="实例的作用域"> 原理: 首先先检查scope是否已经存在需要实例化的对象,如果存在直接从作用域中获取,如果不存在,在通过class属性来实例化新对象,然后,再把实例化后的新对象存入scope中的作用域中. scope属性的值: page: 只在本页面 request: 只在一次请求 session: 只在一次会话 application: 只在一次服务 setproperty>: 给javabean的属性赋值 方法一: 在确定的知道往javabean的属性中存储的值 setpropertyname="实例名"property="javabean的属性名"value="确定的值"> 方法二: 在进行表单提交的时候,需要把表单中的数据赋给javabean的属性 setpropertyname="实例名"property="*"> 前提是: 表单中的各个控件的name值要和javabean的属性值一一对应 方法三: 在进行表单提交的时候,需要把表单中的数据赋给javabean的属性 setpropertyname="实例名"property="javabean的属性名"param="控件的name值"> 前提是: 表单中的各个控件的name值要和javabean的属性值不是一一对应 getproperty>: 从javabean的属性中获取值 getpropertyname="实例名"property="javabean的属性名"> 页面操作: forward>: 请求转发,页面跳转 include>: 页面包含 param>: 页面跳转或者页面包含中的参数设置 paramname="key值"value="value值"> 关于上一页和下一页的问题: select*,row_number()over(orderbynid)asrowfromnews 目标: JSP隐式对象: 在JSP操作中可以直接使用而无须实例化的对象 所有的实例化对象都是由容器产生的,而无须程序员来实例化,隐式对象只能在JSP页面中使用. 九大隐式对象: page: 本页面 常用方法: 调用Servlet中定义的方法 来源: javax.servlet.jsp.HttpJspPage request: 请求 常用方法: getParameter(): 从表单获取值 getParameterValues(): 从表单获取多选按钮 setCharacterEncoding(): 设置请求中的编码格式 setAttribute(): 在请求中存储对象 getAttribute(): 从请求中获取对象 来源: javax.servlet.http.HttpServletRequest response: 响应 常用方法: addCookie(): 把COOKIE数据存储到客户端 voidaddHeader(): 设定客户端头信息 encodeRedirectURL(): URL重写 sendRedirect(): 重定向 进行页面跳转,地址栏会发生变化 重定向不能使请求延续 来源: javax.servlet.http.HttpServletResponse session: 会话,区分不同用户 常用方法: setAttribute(): 在会话中存储对象 getAttribute(): 从会话中获取对象 getId(): 获取sessionID号 getLastAccessedTime(): 当前用户的最后访问时间 getMaxInactiveInterval(): 获取用户的失效时间 setMaxInactiveInterval(): 设定用户的失效时间 invalidate(): 使session立即失效 isNew(): 当前session是不是新session session的默认失效时间是30分钟 来源: javax.servlet.http.HttpSession application: 服务,使用户共享 常用方法: setAttribute(): 在服务中存储对象 getAttribute(): 从服务中获取对象 来源: javax.servlet.ServletContext out: 输出 pageContext: 可以控制page/request/session/application config: 配置信息 exception: 异常 回顾: 九大隐式对象: request: 请求 javax.servlet.http.HttpServletRequest session: 会话 javax.servlet.http.HttpSession application: 服务 javax.servlet.ServletContext response: 响应 javax.servlet.http.HttpServletResponse out: 输出 javax.servlet.jsp.JspWriter pageContext: 上下文 javax.servlet.jsp.pageContext config: 配置 javax.servlet.ServletConfig excetpion: 异常 java.lang.Exception page: 本页面 javax.servlet.jsp.HttpJspPage 目标: Servlet 什么是Servlet? Servlet本身就是一个普通的java类,我们编写的Servlet类要求继承Servlet类,就是jsp页面编译后的结果 为什么要使用Servlet? JSP开发的两种模式: MODEL1: xx.jsp-->xx_do.jsp-->yy.jsp-->yy_do.jsp... 用来作显示或者接受数据以及业务处理都是由jsp页面来完成 MODEL2: xx.jsp-->servlet1-->yy.jsp-->servlet1... 用来作显示或者接受数据由jsp页面来处理,业务处理都是由servlet来完成 怎样使用Servlet? 步骤: (1)编写一个类必须继承HttpServlet类 (2)重写service或者do_Get和do_Post方法 (3)配置web.xml文件来进行访问的设置 --实例化Servlet--> --通过什么方式访问Serlvet--> Servlet的生命周期? 回顾: Servlet (1)两种开发模式的区别? Model1: 接受数据,显示数据以及业务处理都由JSP页面来完成 Model2: 接受数据,显示数据由JSP完成,业务处理由Servlet来完成 (2)什么是Servlet,Servlet在开发模式中的作用? Servlet是一个普通的java类,这个java类是由服务器实例化以及调用其中的方法.Servlet来完成业务处理. (3)怎么编写Servlet? a.编写java类来继承HttpServlet的类 b.重写HttpServlet中的Service或者doGet和doPost方法 c.在web.xml文件中进行配置 (4)Servlet的生命周期? a.服务器加载Servlet,实例化对象 b.调用Servlet中init方法(只在第一次访问的时候实例化) c.调用Servlet中的Service或者doPost和doGet方法(每次有请求的时候都会调用) d.调用Servlet中的destory方法(在服务器被关闭的时候会调用) e.服务器会销毁Servlet的对象 目标: 会话管理 服务器和客户端的通信方式: HTTP协议是无状态的协议: 服务器无法区分,每次发送请求的客户端是新的还是旧的. a.Session方式 第一次访问: 客户端在向服务器发送请求的的时候,服务器会为客户端创建一个标识(sessionid),把这个表示存放在服务器的内存中,再对用户的请求进行处理,处理完了后响应用户,除了把资源响应给用户外还会把sessionid发送给用户,并且存储在客户端. 第一次之后访问: 客户端先检查自己这端是否保持过sessionid,如果有,再请求的时候除了发送请求的信息还会把sessionid一起发送给服务器,服务器在接受请求的时候会同时拿到一个sessionid,在内存的sessionid列表中进行比较,如果存在表示这个用户原来是访问过本服务器的,如果不存在,服务器再为这个用户创建新的sessionid并且存入内存中,然后在响应时候再把这个sessionid发送给客户端... session的操作: 1.Sessoin如何实例化: request.getSession()和request.getSession(true) 2.常用的方式和属性: getId()/isNew()/getCreationTime()/getLastAccessedTime()/getMaxInactiveInterval()/session.getMaxInactiveInterval()/getAttribute()/setAttribute() 注意: 要使session有效必须要先使Cookie有效 b.Cookie方法 分类: 瞬时Cookie: 存储sessionid的Cookie,浏览器关闭存储sessionid的Cookie就失效 持久Cookie 操作: a.实例化Cookie并且存储信息? Cookiecookie=newCookie(key,value) b.怎么设置Cooie的有效时间? cookie.setMaxAge(1800); c.怎么把数据保持在客户端? response.addCookie(cookie); d.怎么获取存储在客户端的Cookie信息? Cookie[]cookies=request.getCookies(); c.URL重写方式 d.隐藏域方式 回顾: 会话管理: 服务器如何区分不同用户的请求 服务器无法区分用户,原因是HTTP协议是一种无状态的协议. 会话管理所采用的方法: (1)session session有效,前提是客户端的cookie必须是开启状态。 session的原理: 第一次发送请求的时候,服务器接受到请求后,创建session对象,在创建session对象的同时会在服务的sessionid列表中搜索有没有该用户的sessionid,如果没有就在内存中生成一个新的sessionid保持,在发送响应的时候把sessionid传递该客户端,保存在客户端的cookie中. 第一次之后发送请求的时候,客户端会在cookie中搜索自己的sessionid并且通过请求把sessionid发送到服务器, 服务器接受到请求后,创建session对象,在创建session对象的同时会在服务的sessionid列表中搜索有没有该用户的sessionid,如果搜索到同样的sessionid,说明该用户以前访问过本服务器. session对象的创建和一些常用方法 (2)cookie 分类: 1、瞬时cookie,用来存储sessionid,浏览器一旦关闭此cookie自动清空. 2、持久的cookie,用来长期在客户端存储数据 在关闭浏览器的情况下,数据不会马上消失. 持久的cookie使用: a.存储信息 Cookiecookie=newCookie(key,value) cookie.setMaxAge(秒) response.addCookie(cookie) b.获取信息 Cookie[]cookie=request.getCookies(); 遍历数组 cookie.getValue()/cookie.getName() (3)URL重写 (4)隐藏表单域 作业提示: 判断session中是否存在map,如没有存在map说明是第一次购买,那么就新建一个map,如果有说明说明已经在购车中存储过内容,那么map就通过session来获取. Map(商品名,商品价格)-->充当购物车 发送请求的时候检查map中的key是否有同名的商品名 (1)有的话: 就对map进行修改 (2)如果没有: 就对map进行添加 map操作完毕,存储到session 目标: (3)URL重写: 实现的前提是,一定在cookie不可用的情况下. 没有禁用Cookie的时候: http: //localhost: 8080/lesson8/main.jsp 禁用Cookie的时候: http: //localhost: 8080/lesson8/main.jsp; jsessionid=330CB6E2BE78CDB86DD4AE1C32372A65 (4)隐藏表单域 EL表达式: 在页面上使用来代替java代码,主要实现取值的功能 结构: ${EL表达式} 功能: 1、基本运算 2、可以从作用域取值* ${作用域中的key}: 会从最小的作用域开始搜索数据,一但搜索到数据就提取出来,不再继续搜索其他作用域. ${作用域.作用域中的key}例如: ${application.作用域中的key}错误! ! ${applicationScope.作用域中的key}正确! ! 3、javaBean中取值* ${作用域.作用域中的key.javabean的属性名} 4、从表单提交请求中取值 ${param.表单控件的name属性值} 5、从数组或者集合中取值 ${作用域.作用域中的key[下标]} 6、EL不会显示null值 问题: EL获取Map中的内容? EL的缺点: 无法实现程序逻辑,条件或者循环语句无法实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java web 基础学习步骤 基础 学习 步骤