jsp servlet 简单总结

为了更好的学习框架的知识,前几天复习了下javaee的基础知识,现在我把他总结成博客,与大家一起分享。这篇文章需要您对javaweb基础有足够的了解,适合复习时提纲挈领,有不足之处,请批评指正

一.关于javaweb开发

       

  用户的请求通过web服务插件进行接收,这个插件将动态请求和静态请求分开,如果是静态请求,直接从文件系统中找出返回给用户,如果是动态请求,则将其交给web容器处理,web容器采用拼凑代码的方式(可以操作数据库)动态的生成数据通过web服务器返回给客户端。

     Javaee核心的设计模式:MVC,关于MVC,相信从事java开发的小伙伴都不陌生,这里不再多说

 二.servlet

   jsp本质上就是个servlet,所以我们从servlet说起

     1.Tomcat的配置

    对于单纯的用jsp,servlet开发,Tomcat的相关配置是必须了解的,这可以帮助我们快速的找到项目中的bug,以及更好的理解整个项目

    Tomcat下有个特别重要的文件server.xml,相信大家对这个文件都不陌生,我们可以通过更改这个文件来配置项目的虚拟路径

   

<Context docBase="rentCar" path="/rentCar" reloadable="true" source="org.eclipse.jst.jee.server:rentCar"/>
 比如这个节点,这是我前几天做的一个租车网站的项目,由于是在eclipse中进行的项目,所以虚拟路径帮助我们自动生成了,当然我们也可以自己配置虚拟路径

 <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
  再比如这个节点,可以帮助我们更改默认的开始访问路径
  再有,可以更改端口号,相信大家也都遇到过端口被占用的情况。

2.servlet配置

   这个也是个容易出错的地方, web.xml修改完要重启服务器,由于servlet在整个web容器中只实例化一次,class别写错,这个是Tomcat找到servlet的关键,当然eclipse会帮助我们自动生成,他以斜杠开头 以webAPP为根路径,这个弄错很容易造成404

可以在这个文件下配置servlet的初始化参数,比较简单

 不管怎么说,虽然现在的编译软件比较智能,不需要我们手动配置这些文件,但是理解这些文件的含义,有时可以帮助我们快速找到代码中的bug。

3.servlet生命周期(重点)

 

 servlet是运行在服务器端的小程序, API提供了统一的编程接口,在web容器(tomcat)上运行

     

   生命周期,

   处理流程:

 客户端向服务器发出http请求-->

   web服务器接受请求并将其发送给servlet,如果这个servlet没有被加载,服务器将其加载到jvm上并执行他-->

   servlet执行相应的操作并将处理的结果返回给服务器-->

   服务器将处理后的结果返回给客户端

   具体:

 生命周期分为五个部分:

   1加载程序classloader

   2实例化new(通过反射),如果已经存在就不实例化

  3初始化initServletConfig) 重写必须superconfig)只一次,读取资源文件等,如果初始化失败,则直接卸载,

  4服务service()doget dopost 多线程?,模板设计模式

  5销毁destroy退出webapps时  释放该实例占用的所有资源,等待垃圾回收,若需要再次使用该servlet,则重新调用init()方法实例化,正常情况下只初始化一次,特殊情况(servlet长时间没用)可能会再次初始化

servlet在服务器中只有一个对象,线程共享


4.servlet跳转

 


 这个比较重要,开发中经常用:

  客户端跳转:HttpServletResponse 接口的sendRedirect(“”);相对根路径地址;说白了就是response.sendRedirect(“”);只能session

  服务器端跳转:

 利用RequestDispatcher接口   即

 RequestDispatcher dispatcher = request.getRequestDispatcher(“”).forward(request,response);


5.servlet常用对象

 在jsp中有内置对象,不过在servlet中传过来的只有request,response,其他的对象需要我们编码获取

 

 关于request常用方法:

 getParameter();

    Enumeration getParameterNames()

    String[] getParameterValues()

 GetParameterMap()

 Request.setCharacterEncoding(“”);设置统一编码

 接受到传过来的值得时候需要判断一下是否为空,否则很容易造成空指针异常,我就吃过这个亏==


 request response封装了一些参数信息,更具体的方法实现可以参考API文档,这里注意一下request的范围,他是一次客户端请求的范围,相信大家对这种知识很熟悉了


 获得session对象:

 这里对于session及他的范围,做一下简单说明,如果获取session可以通过getSession()获得

session

1.服务器的一块内存,会话范围内,任何跳转都可以,新开浏览器不行,如果客户端一端时间没有操作,服务器自动终止会话,同一个客户端,一个webAPP下所有的servlet jsp共享同一个session

2.对于sessionID,可以通过cookie,(创建session时放入cookie)也可以通过URL重写来实现:?

常用方法:

public String getId(); 取得Session Id即为JSESessionid ,操作session用了cookie机制

Public long getCreationTime()

Public long getLastAccessedTime()

Public boolean isNew()

Public void invalidate()

Public Enumeration getAttributeNames()


 对于cookie的知识也是非常重要的:

 Cookie

1.服务端的信息保存在客户端的一个文本文件,以键值对的形式

2.一般来说,cookie保存在内存中,关闭客户端,其cookie就消失了,,不过,我们可以通过方法setMaxAge().来设置保存的最大时间,一般一个客户端的cookie最大数量是一定的

3.一个servletjsp设置的cookie可以被其目录或子目录下的读到,这里指的是URL路径,非实际路径

4.每次客户端访问服务端,cookie会随着头信息发送能够给服务器,服务器会为每个访问他的客户端设置唯一标识符JSEsessionIDcookie

常用方法:

Public cookieString name,String value;

Public String getName();

Public String getValue();  public setMaxAge(int);秒为单位

Response.addCookie(Cookie cookie);

Public Cookie[] Request.getCookies()


 

Application

API中的表现ServletContext  webapps范围


6.过滤器,监听器(后续更新)


三.jsp

1.首先要明确的是jsp的本质就是servlet,我们可以找到编译后的文件找到jsp编译后编程了java文件(servlet)

2.jsp指令

page指令 设置编码,导包,错误页等

Include 指令 :静态包含<%@include file=””%>集中编译处理,先包含再处理

动态包含:<jsp:include page=””/> 将处理界面包含进来,如果是动态页面,先进行动态处理,然后再包含 这种方法可以定义参数  先处理再包含

建议使用动态

 

<%@%>directive是编译指令

<jsp:> action 运行时指令

跳转指令

<jsp:forward page=””/> 服务器端跳转

3.jsp标签指令:

使用Javabean

  <jsp:useBean id=”实例化对象名称” scope=”” class=””/> 默认调用bean的五参构造方法,通过反射完成实例化

   设置属性

  <jsp:setProperty name=”实例化对象名称”  property=”*”/> 表示自动匹配,但参数名要一直,通过反射完成

<jsp:getProperty name=”实例化对象名称” property=“属性名称”/>相当于调用getter方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值