当前位置:编程学习 > JAVA >>

jsp/java web基础知识回顾

因为太长时间没有做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页面 www.zzzyk.com
11.jsp动作组件:JSP动作组件是一些XML语法格式的标记,被用来控制Web容器的行为
 <jsp:include>动态包含
 <jsp:forward>使程序从当前页面跳转到另一个目标页面运行,浏览器地址栏不会发生任何变化;forward动作语句后的代码不能执
 行(已经带着request请求跳转到其他页面了)
 <jsp:param>,用来用于传递参数信息 www.zzzyk.com
 <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>定义

补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,