因为太长时间没有做java web开发了,所以写这边随笔用来简单回顾一下jsp/java web的相关知识
1.tomcat中server.xml,<Context>表示一个web应用上下文路径;
docBase:指明一个Web应用所在的物理文件夹名
path:定义Web应用的上下文路径名,上下文路径第1个字符一般为“/”。
reloadable:此属性取值为“true”时,表示让Catalina监控Web应用中WEB-INF\classes文件夹和WEB-INF\lib文件夹下文件的变化
2.tomcat默认的虚拟主机是localhost,它默认的Web应用发布文件夹是webapps。在此文件夹下发布的Web应用通过URL即可直接访问,不需要在<Context>中进行配置
3.Servlet将java代码与网页设计混合写在一起,不利于维护。JSP网页版面的设计与维护,比Servlet要直观和容易。JSP页面最终会被JSP服务器编译成一个Servlet程序来运行。
4.JSP采用“先编译后执行”的工作方式。一个JSP网页首次被访问时,Web服务器执行编译操作.(多线程运行)
5.<% 符合Java语言的Java语句 %>
6.jsp执行过程:
servlet
request->*.jsp->jsp parser->*.java->jsdk(servlet分析器)->*.class->执行->response
7.html注释<!-- --> jsp注释<%-- --%>
jsp声明<%!...%>,声明后的变量,方法或类都是jsp编译后的Servlet的类内成员
8.Tomcat把<% %>标记内的Java代码段放在Servlet实现类 _jspService()方法的try{}内,所以在<%%>内定义的变量属于局部变量,并且作用范围仅限于try{}内。如果有多个<% %>标记,则按出现的先后顺序转译到try{}内。
9.jsp表达式<%= expression %>,编译后Servlet为:out.println(expression);
10.jsp指令元素<%@ 指令元素 属性="值" %>,主要包括三个:include、page和taglib;主要供JSP容器使用,为JSP容器提供相关的页面属性信息,用于指示JSP容器如何正确地翻译代码,或者执行特定的操作
include:文件包含,是在JSP容器把JSP网页翻译成Servlet程序时,将指定文本文件的内容嵌入Servlet程序中,替换include指令
<%@ include file="" %> 静态绑定
page:用于设置当前JSP页面的属性
默认情况下已经被加入到当前JSP页面的类,包括java.lang.*;、java.servlet.*;、java.servlet.jsp.*; java.servlet.http.*;
isThreadSafe,表示生成的servlet是否是线程安全的;如果true的话,表示线程安全,JSP容器会以多线程方式运行JSP页面
11.jsp动作组件:JSP动作组件是一些XML语法格式的标记,被用来控制Web容器的行为
<jsp:include>动态包含
<jsp:forward>使程序从当前页面跳转到另一个目标页面运行,浏览器地址栏不会发生任何变化;forward动作语句后的代码不能执
行(已经带着request请求跳转到其他页面了)
<jsp:param>,用来用于传递参数信息
<jsp:plugin>,插入一个applet或Bean
< jsp:setProperty>:设置JavaBean的属性
< jsp:getProperty>:输出某个JavaBean的属性
< jsp:useBean>:寻找或者实例化一个JavaBean
12 jsp隐含对象
简化程序设计,JSP规范定义了常用的8个隐含对象(implicit objects),这些隐含对象不需要在JSP页面中用new关键字来创建,而是
由Servlet容器来创建与管理,并传递给JSP页面的Servlet实现类使用。
out(JspWriter),requeset(HttpServletRequest),response(HttpServletResponse),session(HttpSession),application(ServletContext),
exception(Throwable),config(ServletConfig),page(Object),pageContext(PageContext)
out.print()/out.println();out.write()?PrintWriter?
request.getParameter()/getParameterNames()/getParameterValues()/
两个JSP/Servlet程序间要交换数据时,可通过request作用范围变量来实现(getAttribute/setAttribute)
[forward方式跳转,会传递request,超链接与在浏览器地址栏输入该页面地址的访问方式一样,都是重新发送一个请求到链接页面]
getRequestDispatcher("''),转发器,获得目标资源的转发器,通过转发器将当前Servlet程序的request和response对象转发给目标资源,并跳转至目标资源上运行程序,这样,目标资源就可通过request对象读取上一资源传递给它的request属性
removeAttribute()/setCharacterEncoding()/getProtocol/getRemoteAddr()/
response.flushBuffer()/setBufferSize()/getWriter(PrintWriter)/setContentType()/setCharacterEncoding()/sendError()/setHeader()/sendRedirect("")/
response通过文件输出流实现下载
application对象被同一个上下文(同一个web应用)中的所有jsp/servlet程序共享,tomcat服务器开启的时候即被创建;
application访问web.xml中配置的<Context-param>/getInitParameter("")/attribute相关方法/log()/
config常用于给一个Servlet程序传送初始化参数
exception,JSP页面在运行时发生异常,系统会生成一个异常对象
page对象表示“当前”Servlet程序对象,类似于Java中的“this”关键字
pageContext获取其他隐含对象/转发跳转或包含
13 会话跟踪-
Cookie/response.addCookie()/request.getCookies()/
URL重写实现参数传递/隐藏表单域实现参数传递/
HTTP协议是一种无状态的协议,客户端每次打开一个Web 页面,它就会与服务器建立一个新的连接,发送一个新的请求到服务器,服务器处理客户端的请求,返回响应到客户端,并关闭与客户端建立的连接。当客户端发起新的请求,那么它重新与服务器建立连接,因此服务器并不记录关于客户的任何信息。
session-session会话,通常把从登录进入系统到注销退出系统之间所经历的时间,称为一次session通信周期;jsp中的Session会话:一次会话由客户打开一个浏览器开始到关闭浏览器或退出会话结束,用户重新打开1个浏览器并重新输入url,或访问2个web应用都是开启不同的会话;session隐含对象由Web服务器创建,并存储在服务器端;一次会话会创建一个session对象,在一次会话期 间,web应用内的所有程序共享一个session对象
attribute相关方法/isNew()/getId()/invalidate()/setMaxInactiveInterval()/
14 Servlet/ServletConfig/->GenericServlet->HttpServlet
servlet工作流程-(1)客户机将请求发送到服务器。
(2)服务器上的Web容器实例化Servlet。
(3)Web容器将请求信息发送到 Servlet。
(4)Servlet 创建一个响应,并将其返回到Web容器。
(5)Web容器将响应发回客户机。
(6)服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。
生命周期-创建实例->init()->service()->destroy()
init()-两种方式init()/init(ServletConfig config){super.init(config)}
sevice(HttpServletRequest req,HttpServletResponse resp)
Servlet体系结构是建立在Java多线程机制之上的,当两个或多个线程同时访问同一个Servlet时,可能会发生多个线程同时访问同一资源的情况,数据可能会变得不一致。对于Servet中成员变量,并发访问时需要采取线程同步的措施确保线程安全
destroy()-服务器删除servlet实例调用,程序员可以覆写它完成,关闭数据库连接等清理工作
15.Servlet API-javax.servlet和javax.servlet.http
javax.servlet.GenericServlet--独立于协议
javax.servlet.HttpServlet,--嵌入了对Http协议的支持
把数据传递给客户端
在Servlet中,可以通过直接向输出流写入数据来生成HTML页面;使用PrintWriter把数据发送回客户端
PrinteWriter out=response.getWriter();out.println(“<HTML>Inside HTML</HTML>”);
在开始进行任何输出之前,必须使用setContentType()方法指定MIME类型
response.setContentType(“text/html,charset=gb2312”);
16.访问servlet,需要在web.xml进行配置
<servlet>
<servlet-name>First</servlet-name>
<servlet-class>com.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>First</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
17.WEB-INF\classes目录存放Servlet类文件
WEB-INF\lib目录存放Web应用程序所使用的Java库文件(JAR文件)
18.web.xml中<servlet>定义的<init-param>可以通过servlet的getInitParameter()方法或者getServletConfig().getInitParameter()方法
19.过滤器Filter链式
request->filter1->filter2....->目标资源
response <- ..filter<-
javax.servlet.Filte接口
init()
doFilter(ServletRequest request, ServletResponse response,FilterChain chain)过滤器的业务逻辑代码在doFilter()方法内实现
{ ...程序段1...
chain.doFilter(request, response);
...程序段2...
}
destroy()
javax.servlet.FilterConfig接口
javax.servlet. FilterChain接口
web.xml配置
<filter>
<filter-name>
<filter-class>
<init-param>
</filter>
<filter-mapping>
<filter-name>
<url-pattern>//需要过滤的url
<dispatcher>//过滤请求类型
</filter-mapping>
过滤器的过滤执行次序与他在web.xml中定义的次序一致
20 侦听器主要侦听Servlet容器中的事件,所侦听的事件发生后,容器激活侦听器,执行预定的操作。侦听器侦听的事件主要是JSP
隐含对象application、session、request对象上发生的事件,主要有隐含对象的创建与销毁事件,相关作用范围变量的创建、修改和销
毁事件。
web.xml:
<listener>
<listener-class>
</listener>
javax.servlet.ServletRequestListener接口,主要侦听request隐含对象的创建与销毁事件
ServletRequestAttributeListener接口,侦听request属性的变化
javax.servlet.http.HttpSessionListener接口,侦听上下文中session对象的创建与销毁事件
javax.servlet.http. HttpSessionAttributeListener接口,侦听session属性的变化
javax.servlet.ServletContextListener接口,侦听Web应用Sevlet上下文的初始化事件和销毁事件
javax.servlet.ServletContextAttributeListener接口 ,侦听application属性事件
21.JavaBean
javabean即pojo类,plain old java objects,简单的java对象
jsp中使用JavaBean
1.<% %>内new
2.jsp动作<jsp:useBean><jsp:setProperty><jsp:getProperty>
注意userBean中class(找不到则创建新的)和type的区别,还有scope
利用外部的javabean,文件上传,email,poi等
22.数据库访问-jdbc
tomcat\conf\context.xml中配置数据库连接池<Context>
javax.sql.DataSource
java.sql.Blob blob = rs.getBlob("");
byte[] bytes = blob.getBytes(,);
23.MVC
struts1.x
controller-ActionServlet/Action
struts-config.xml
ActionServlet读取Struts-config.xml中的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个Action对象之间的映
射。Action对象会调用javabean完成业务操作.
流程:login.jsp->submit->login.do->web.xml->servlet(ActionServlet,struts自带)->读取struts-config.xml->action/actionform
(表单bean)->execute()
24.EL与JSTL
EL表达式引入EL表达式语言目的之一是为JSP页面计算;访问和打印数据提供方便,尽可能减少JSP页面中的Java代码,使JSP页
面更简洁、更易于开发和维护
EL表达式语言的基本语法为: ${表达式}
EL表达式通过“.”算符访问JavaBean中的属性,${JavaBean名.属性名}
JSTL的全称是JSP标准标记库(JSP Standard Tag Library,JSTL),它是SUN公司为简化JSP页面设计而提出的一种技术规范;
*.properties文件称为资源文件,在资源文件中,以“key=value”的形式存储一个变量及它的值,一行写一对“key=value”;方便消息的集中存储和管理 ;方便消息的国际化
分享到:
相关推荐
首先,课程将回顾Java的基础知识,包括生成随机数、处理日期和时间、字符串操作(如charAt和indexOf)、Java Applet、集合框架以及URL、HTML表单和简单的验证码图片制作。此外,还会对JavaScript进行复习,学习事件...
2. **JSP技术**:JSP(JavaServer Pages)用于生成动态网页,可能包括JSP语法、EL(Expression Language)、JSTL(JavaServer Pages Standard Tag Library)的使用,以及如何在JSP中嵌入Java代码。 3. **MVC模式**...
作为一本必备的参考书籍,它涵盖了广泛的主题,包括Java编程基础、Web服务器、Servlet、JSP、Java EE框架、数据库交互以及相关工具和最佳实践。 首先,书中深入浅出地介绍了Java编程语言的基础,包括语法、面向对象...
1. **Java Web开发基础**:本书涵盖了Java Web开发的基础概念,包括Servlet、JSP(JavaServer Pages)以及JavaServer Faces(JSF)等核心技术。这些技术是构建动态Web应用的基础,用于处理HTTP请求,生成动态内容,...
第2篇为范例演练篇,主要包括基础知识相关、数据库相关、图像与文件相关、图表与报表相关、Ajax等相关的范例;第3篇为项目实战篇,主要包括讯友联系人管理模块、播客视频管理模块、博客管理模块、明日知道论坛管理...
3. **用Servlet/JSP/Struts开展现层**:在Web展现层,学员将学习如何使用Servlet、JSP(Java Server Pages)和Struts框架来创建动态网页。Struts作为MVC(Model-View-Controller)架构的一部分,能够帮助实现业务...
1. **Java基础**:首先,书中会回顾Java语言的基础知识,如面向对象编程、异常处理、集合框架等,这是理解任何Java Web应用开发的基础。 2. **Servlet与JSP**:作为Java Web开发的基石,Servlet和JSP是两个关键概念...
这份“Java基础知识复习资料”涵盖了学习Java编程所必需的关键概念和技术,旨在帮助初学者巩固基础,同时也适合有经验的开发者进行回顾。 1. **Java语法基础** - **变量与数据类型**:Java提供了基本数据类型(如...
《Java Web开发速学宝典》是一本专为初学者和有一定基础的开发者设计的教程,旨在快速掌握Java Web开发技术。这本书通过丰富的实例代码帮助读者深入理解Java Web开发的核心概念和实践技巧。以下是该书各章节例子源码...
根据提供的信息,《Java Web应用开发》电子教案涵盖了Java Web应用的基础知识、开发环境配置以及简单JSP页面的开发。以下是对这些知识点的详细解析: ### 一、Java Web概述 #### 1. Java Web概念 Java Web是指使用...
1. **Java Web基础知识**:在进行Java Web开发时,首先需要理解基础概念,如Servlet、JSP、JavaBean等。Servlet是Java服务器端程序,用于处理HTTP请求;JSP则是一种动态网页技术,可以方便地将HTML和Java代码结合;...
1. **Servlet与JSP**:作为Java Web开发的基础,Servlet是用于处理HTTP请求的Java类,而JSP(JavaServer Pages)则是一种动态网页技术,允许在HTML中嵌入Java代码。学习这些例子,你可以理解如何创建动态响应的Web...
1. **回顾基础**:确保对Java Web的基本概念和原理有清晰的理解。 2. **实战演练**:动手做实验,模拟实际开发环境,加深理解。 3. **习题解析**:通过解答课后习题,检验学习效果,查漏补缺。 4. **总结归纳**:...
接着,17.11章节可能讲解了JSP(JavaServer Pages)的基础知识。JSP允许开发者将HTML与Java代码结合,便于创建动态网页。这一章可能涵盖了JSP指令、脚本元素、EL(Expression Language)和JSTL(JavaServer Pages ...
【基础知识点】 1. **HTML/CSS/JavaScript**: 作为JSP的基础,HTML用于构建网页结构,CSS用于样式设计,JavaScript负责客户端的交互效果。 2. **Servlet**: JSP的后台处理通常由Servlet完成,Servlet是Java的服务器...
1. **第2章 JSP的基础语法.ppt**:这一章节涵盖了Java Server Pages(JSP)的基本概念,包括JSP页面结构、指令、脚本元素、动作标签等。学习者将了解如何在JSP页面中编写动态内容,并与HTML元素结合使用。 2. **第5...
通过这些详细的技术点,本文给出了一个关于基于Java技术的Web应用设计模型比较研究的全面知识回顾。这些知识点的涵盖为Java Web开发人员提供了一个理论和实践相结合的丰富资源,有助于他们设计、实现和测试性能更优...
【标签】"java web,考试"表明这个题目主要考察的是Java Web的基础知识和应用能力,考生需要熟悉Java语言、Servlet、JDBC以及Web开发的基本流程。 在解题过程中,考生可能还需要考虑以下几点: - **安全性**:确保...
通过这一部分的学习,初学者能够顺利入门,而有经验的开发者也可以借此回顾和巩固基础知识。无论对于哪一类学习者,“lesson1”都是项目实战开始的第一步,它的重要性不容忽视。 “accps2java web项目”整体而言,...
Java Web开发通常依赖于servlet和JavaServer Pages (JSP)技术,这些技术通过Java Servlet API和JSP API来实现动态网页的生成。 2. Java Web服务器的组件 文档中提到的“DMWAS”可能是一个特定的Web应用服务器(如...