2015/8/24

  1. Web项目目录结构:总目录my,中有WEB-INF目录,中有classes、lib两目录和web.xml文件。classes保存编译好的java文件,lib保存库文件,web.xml为此web app的配置文件。
  2. 为与tomcat连接,classes中的java文件需要引入tomcat/lib中的servlet-api.jar。
  3. 用户访问时,输入网址后,web.xml中相关语句将网址与相关java文件连接;

<!--相同name的servlet标签与servlet-mapping标签对应,用户访问url-pattern中的网址,servlet-class中的java文件起作用。name随便起,url-pattern起始为斜杠/,sevlet-class为classes目录中class文件的名字。一个servlet可对应多个servlet-mapping-->

<servlet>

<servlet-name>myfirstservlet</servlet-name>

<servlet-class>HelloWorldServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>myfirstservlet</servlet-name>

<url-pattern>/HelloWorldServlet</url-pattern>

</servlet-mapping>

java文件中为一个extends HttpServlet的类,含有doGet或doPost等方法(用于处理用户请求)方法有用户请求与服务器应答两个参数,接受请求,做出应答。

2015/8/25

  1. WEB_INF中的classes相当于java的classpath,里面的java的class文件要有与之所在包对应的目录结构。
  2. 为使页面支持中文,需要在传输数据之前resp.setContentType("text/html;charset=gbk");
  3. servlet的生命周期:classLoader:加载class;

new:实例化servlet,在第一次用户请求此servlet时;

init(ServletConfig):实例化后,执行它,仅在实例化时执行一次,为servlet中的方法;

service doGet…:处理请求,每一个用户的请求,在多线程中执行,各线程均调取上面已在第一次时实例化出的对象,不新实例化;

destroy():最后会退出。

整个过程中只有一个实例化出的对象,init()只执行一次。

所以不要在servlet中设计成员变量,否则不同用户只能有同一个成员变量。

2015/8/26

  1. 地址栏中输入htm文件地址(/ThreeParams.htm),则浏览器显示htm展示的页面。htm文件中可设置跳转,如下。按“提交“按钮,参数被提交到req对象中,页面跳转至(/ThreeParams),接下来执行xml,class文件。

<form id="form1" name="form1" method="post" action="ThreeParams">

  <table width="343" border="1">

<tr>

      <td width="92">param1</td>

      <td width="94"><input name="param1" type="text" id="param1" />      </td>

</tr>

<tr>

   <td>&nbsp;</td>

   <td><label>

      <input type="submit" value="提交" />

   </label></td>

</tr>

</table>

</form>

 

  1. 也可以地址栏中输入/ThreeParams,则直接-xml-class,此时req的参数为空。

2015/8/27

  1. Cookie分两种,没生命周期的,有生命周期的;没生命周期的仅在此窗口和子窗口有效,有生命周期的在生命周期内一直存在。
  2. 父路径设置的Cookie子路径可以读取,子路径的父路径不能读取,同目录下可以;/servlet/SetCoolies中设置的,/ShowCookies中不能读取,反之可以。(路径只是URL,写在web.xml中的servlet-map,和class所在的包无关)
  3. form

form提交中action的路径可以为虚拟路径,

也可以为绝对路径,/代表http://127.0.0.1/

web.xml

web.xml中url-pattern为webapplication根路径,/代表http://127.0.0.1/Test/

  1. jsp中  <%!..%>中声明的变量为servlet的成员变量(可用于访问次数计数器等作用),方法为类的方法;

<%...%>(没有叹号)中声明的变量为类似doGet()方法的_jspService()方法的局部变量,声明方法将出错,因为方法中不能再定义方法。

2015/8/28

  1. html的注释<!-->里含有的jsp代码(<%>)会正常运行。<!-->的内容会传到客户端html页面,为正常的html注释。所有的jsp代码均不会在客户端显示,只在服务器端运行。
  2. jsp中的out.println()表示在html页面中输出,System.out.println()表示在服务器的标准输出上输出。
  3. jsp中的变量是存在于服务器中的,不能直接在javascript中使用,因为javascript是客户端中的语句,这点要注意。所以jsp变量需要被html调用时,全是out.println(),而不是直接写。
  4. jsp编译指令<%@... > 在编译时发生作用,包含三种,page、include、taglib。

page:<%@page 属性=”值”%> 说明jsp程序的有关信息,如import、extends、是否可用session、页面编码、出错后链接到哪个页面;

include(静态包含):<%@include file=”fileURL”%> file为jsp文件,此条命令相当于把指定jsp文件中的内容取代这条指令,两个jsp文件将整合为一个。此命令不能为file传参数,”fileURL?name=val”是错的。

taglib:以后补充。

5.   jsp动作指令<jsp:…>

include:<jsp:include page=”name.jsp”>

<jsp:param name=”name1” value=”val1”>

<jsp:param name=”name2” value=”val2”>

</jsp:include>

 

静态包含

动态包含

编译时间

与父文件一起编译

运行到它时再编译

是否生成独立class

与父文件结合生成一个父文件名称的java及class

独立java及class

可否传参数

不能单独传参数

可传参数,其request含有父文件request的参数及单独传的参数。

调用方式

直接在父文件java中的_jspService方法中加入相关语句

父文件java调用一个方法,指定动态包含的jsp文件名,并传入父文件的req等参数

forward:<jsp:forward page=”name.jsp”>用于转到某个页面,与动态包含一样可传参数且包含父文件的参数,有独立的java及class,但forward后的语句不会继续执行。另它与response.sendRedirect(“name.jsp”);需要区分,sendRedirect是由response传给客户端,客户端再连到新地址,而forward是服务器内部转到;且sendRedirect后的语句还能执行,而forward是阻断式的:

 

 

 

 

Sendredirect

Forward

是不同的request

虽然是不同的对象,但是,可以取到上一个页面的内容

send后的语句会继续执行,除非return

forward后的语句不会继续发送给客户端

速度慢

速度快

需要到客户端的往返,可以转到任何页面,

服务器内部转换,

地址栏有变化

地址栏没有变化

可以传参数,直接写在url后面

可以传参数

/代表的是http://127.0.0.1/

<%response.sendRedirect("/test/ServletToJSP");%>

<form action="/test/ServletToJSP">

<a href="/test/ServletToJSP">test</a>

/代表的是http://127.0.0.1/test webapp地址

this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
.forward(req, resp);

并且只能以/开头

useBean: <jsp:useBean id=”实例名” class=”类名”>。useBean的scope,page只在当前此html页面有效;request相当于new出的是request的attribute,request不变则均有效,包含及forward均不变;session相当于new出session的attribute,session同理于cookie;application相当于new出application的attribute。

2015/8/30

  1. eclipse连接数据库步骤(连接oracle为例):

1)        
将JDBC的jar包引入;

2)        
Class.forName(“oracle.jdbc.driver.OracleDriver”);或new
oracle.driver.OracleDriver();

3)        
Connection conn =

DriverManager.getConnection

(“jdbc:oracle:thin:@192.168.0.1:SXT:1521”,
“scott”, “tiger”);

4)        
Statement stmt =
conn.createStatement(); 创建语句对象

5)        
ResultSet rs =
stmt.executeQuery(“select * from dept”); 通过具体语句获得结果集合,rs类似于iterate,rs.next()返回boolean值,rs.getString(String
columnName)以String类型拿到元素

6)        
rs.close(); stmt.close();
conn.close();

Servlet_note的更多相关文章

随机推荐

  1. jquery中attr()和prop()的区别

    最近项目回归使用jquery,页面渲染全是使用jquery做的,所以做的时候也遇到了许多以前没有见过的问题,如这次操作[radio]控件的"checked"属性时有遇到问题, $( ...

  2. 教你如何使用Java手写一个基于链表的队列

    在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...

  3. 经典Hash函数的实现

    Hash函数是指把一个大范围映射到一个小范围.把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存. 除此以外,Hash函数往往应用于查找上.所以,在考虑使用Hash函数之前,需要明白它 ...

  4. typecho设置文章密码保护

    在别人博客看到了一个需要输入密码才能访问文章的功能,像下图一样 typecho也是有这个功能,不需要插件就可以实现.在编辑文章时,右边高级选项,公开度里有个密码保护可以选择 效果图 不过这样的界面不是 ...

  5. Java集合详解7:HashSet,TreeSet与LinkedHashSet

    今天我们来探索一下HashSet,TreeSet与LinkedHashSet的基本原理与源码实现,由于这三个set都是基于之前文章的三个map进行实现的,所以推荐大家先看一下前面有关map的文章,结合 ...

  6. 微信小程序 组件通信相关知识整理

    1.自定义组件间通信与事件 https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.htm ...

  7. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  8. 前端基础之--css中可被继承和不可被继承的属性

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性:vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shado ...

  9. 新手必看!Office Web Apps 2013 安装与配置(实战)

    分享人:广州华软 星尘 一. 前言 Office Web Apps Server 是Office 服务器产品,它可提供在Sharepoint 2013网站中在线浏览和编辑 Word.PowerPoin ...

  10. Ambari自定义Service

    一.Ambari基本架构   img016.jpg Ambari Server 会读取 Stack 和 Service 的配置文件.当用 Ambari 创建服务的时候,Ambari Server 传送 ...