netstat -an ——查看端口占用情况

netstat -an ——查看是谁占用了哪个端口

端口被占用之后可以关闭端口占用程序或者在conf/server.xml修改本身使用端口

javac -d .  java文件名.java   ——编译带包的java文件

MyFirstServlet规范:

package com.tfj;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyFirstServlet implements Servlet{
//该函数用于初始化servlet就是将该servlet装载到内存中
//改还是只会被调用一次
public void init(ServletConfig config)
throws ServletException{
}
//该函数是得到Servlet对象
public ServletConfig getServletConfig(){
return null;
}
//该函数是服务函数,我们的业务逻辑代码就是写在这里
//该函数每次都会被调用
public void service(ServletRequest req,ServletResponse res)
throws ServletException,
java.io.IOException{
//在控制台输出
System.out.println("在控制台出现这个是不是很神奇呢"+new java.util.Date());
res.getWriter().println("Congratulations you hava get Servlet"+new java.util.Date().toLocaleString());
}
//该函数是得到Servlet配置信息
public java.lang.String getServletInfo(){
return null;
}
//销毁该Servlet,从内存中消除,该函数别调用一次
public void destroy(){
}
}

共享同步机制:

定时发送邮件功能:

可以通过<load-on-startup>配合线程知识搞定

//修改修改Servlet.java

标准Servlet.java:

package com.tfj.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ServletConfigTest extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}

JSP分页模板:

// 1.加载驱动  Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.得到链接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","company","123456");
// 2.跟sql server一模一样
Statement sm=ct.createStatement();     //接受pageNow     String s_pageNow=(String)request.getParameter("pageNow");     int pageNow=1;     if(s_pageNow!=null){     pageNow=Integer.parseInt(s_pageNow);     }     int pageCount=0;//总页数
int rowCount=0;//总记录数
int pageSize=4;//每页记录数
ResultSet rs=sm.executeQuery("select count(*) from tb_Employee");
if(rs.next()){
rowCount=rs.getInt(1);
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
}
rs=sm.executeQuery("select * from (select a.*,rownum rn from (select * from tb_Employee) a where rownum<="+pageSize*pageNow+")  where rn>="+((pageNow-1)*pageSize+1)+"");
while(rs.next()){
// 用户名和薪水
out.print("<tr>");
out.println("<td>"+rs.getString(2)+"<td>");
out.println("<td>"+rs.getString(6)+"<td>");
out.print("</tr>");
}
//打印总页数
for(int i=1;i<=pageCount;i++){
out.print("<a href=MyJsp.jsp?pageNow="+i+">["+i+"]</a>");
}
//关闭打开的资源
rs.close();
sm.close();
ct.close();
//关闭资源规范:
finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs=null;
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
ps=null;
}
if(ct!=null){
try {
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
ct=null;
}   }

//建立自增长:

create sequence users_seq
start with 11
increment by 1
minvalue 11
nomaxvalue
nocycle
nocache
/

//登录格式

out.println("<form action=' ' method='post'>");
out.println("<center>账号:<input type='text' name='id'/></center><br/>");
out.println("<center>密码:<input type='password' name='password'/></center><br/>");
out.println("<center><input type='submit' value='登录'/></center><br/>");
out.println("</form>");

//获取账号、密码

String id=request.getParameter("id");
String password=request.getParameter("password");

//跳转

response.sendRedirect("/web应用名/资源名");
request.getRequestDispatcher("/资源名").forward(request,response);

Servlet技术

Servlet技术是整个Web开发中的一个核心部分,其包括三个重要部分,分别是Servlet开发、Filter开发和Listener开发。本文将重点介绍如何完成第一个Servlet程序以及Servlet的生命周期。还将介绍HttpServlet的三个常用方法,包括doGet方法、doPost方法以及service方法。最后还将介绍如何进行Filter开发和Listener开发。

重点内容:

Servlet的实现

Servlet常用方法

Filter开发

Listener开发

什么是Servlet

Servlet一种运行于服务器端的Java应用程序,可以用来与数据库进行交互、响应客户请求,还可以用来生成动态的Web页面。Servlet与传统的Java应用程序不同,它是由Web服务器来进行进行加载并运行的。所有Web服务器首先必须包含支持Servlet的Java虚拟机。

在Servlet之前,开发人员通常会使用公共网关接口(CGI)应用程序完成客户请求等操作。而CGI程序的编写是非常麻烦和费力的,而且效率非常低下。Servlet的出现打破了这种开发方式,它的执行速度比CGI要快很多,而且每个用户请求将被激活成单个程序中的一个线程,这样的请求方式能够大大的降低系统开销。

Servlet开发

1.第一个Servlet程序

既然Servlet本身就是一个简单的Java类,那么它的创建方式就和普通类完成一样了,不同的是所有的Servlet必须继承HttpServlet类。

public class HelloServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServlet Response resp)throws ServletException, IOException {

resp.setContentType("text/html");

PrintWriter out = resp.getWriter();

out.println("Hello,Servlet!");

}

}

2.Servlet生命周期

大家都知道Java中类是有生命周期的,Servlet也是一个Java类,所以它同样有生命周期,其从生成到销毁必须进过如下几个步骤。

(1)将Servlet加载到Servlet引擎(也可以叫Servlet加载器)中。

(2)加载完成后,立即调用其init()方法来进行初始化操作。

(3)通过提供的响应方法来处理客户端的请求,如get方式的请求则调用其doGet方法,post方式的请求则调用其doPost方法。

(4)调用destroy()方法进行销毁操作。

(5)通过垃圾收集器进行收集清理。

3.HttpServlet常用方法

HttpServlet接口除了init()和destroy()方法用来处理Servlet初始化和销毁。还包括一些常用方法,如doGet方法、doPost方法以及Service方法等等。

(1)doGet方法用来处理客户端的HTTP GET请求。如果客户端发送其他的请求,如HTTP POST,服务端将会抛出异常。doGet方法只能处理客户端浏览器直接访问和表单GET方式提交的请求。

(2)doPost方法用来处理客户端的HTTP POST请求。如果客户端浏览器通过HTTP POST请求来访问Servlet,而在Servlet类中并没有doPost方法,这时在客户端浏览器中将会抛出异常消息。doPost方法只能处理表单POST方式提交的请求,不能处理客户端浏览器直接访问。

(3)service方法用来同时处理HTTP GET和HTTP POST请求。包括客户端浏览器直接访问和表单GET方式提交的表单以及表单POST方式提交的表单。

Filter过滤器开发

1.过滤器简介

Filter的中文译名为过滤器。从字面名称就可以看出来Filter是用来进行过滤的。通过它可以改变请求和响应信息。Filter不是一个Servlet,它不能产生响应信息,它只能够在一个请求到达之前预处理该请求,也可以在请求离开之前处理响应。借助于过滤器可以实现如下功能。

(1)过滤非法文字和信息。

(2)设置统一字符编码。

(3)对用户进行登录验证。

(4)改变图片文件格式。

(5)对相应做压缩处理。

(6)对XML的输出使用XSLT来进行转换。

2.实现第一个过滤器

Filter同Servlet类似同样,也是一个Java类,所以其添加方式和普通的Java类完全相同。自定义的Filter类必须实现Filter接口,还必须实现Filter接口中定义的init()方法、doFilter()方法和destroy()方法。

3.Filter生命周期

Filter的生命周期和Servlet的生命周期非常类似,Filter从生成到销毁必须进过如下几个步骤。

(1)服务器启动时就将加载Filter。

(2)加载完成后,立即调用其init()方法来进行初始化操作。

(3)过滤用户请求,调用其doFilter()方法。

(4)调用destroy()方法进行销毁操作。

(5)通过垃圾收集器进行收集清理。

4.IP地址过滤器

前面提到过滤器可以过滤用户请求,下面来看一个简单的示例,创建一个IP过滤器,当一个用户发出访问请求的时候,首先通过过滤器进行判断,如果用户的IP地址被限制,则禁止访问;否则为合法的IP,则可以继续访问。

Listener监听器开发

1.监听器简介

Listener的中文译名为监听器,从字面上可以看出Listener主要用来监听之用。通过Listener可以监听容器中某一执行动作,并根据其要求做出相应的响应。到目前Servlet 2.4开始,一共包含八个Listener接口,可以将其分为三类,分别如下。

(1)与ServletContext有关的Listener接口,即Servlet上下文监听器。

(2)与HttpSession有关的Listener接口,即Http会话监听器。

包括四个Listener接口,分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。

(3)与ServletRequest有关的Listener接口,即客户端请求监听器。

2.Servlet上下文监听器

Servlet上下文监听器用来ServletContext对象的创建和删除以及属性的添加、删除和修改等操作。包括ServletContextListener和ServletContextAttributeListener两个接口。

3.Http会话监听器和客户端请求监听器

Http会话监听器用来HttpSession对象的创建和删除以及属性的添加、删除和修改操作,还可以用来监听也可以监听HttpSession对象的有效状态。包括HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener四个接口。

Servlet个人总结的更多相关文章

  1. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  2. java中servlet的各种路径

    1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...

  3. Servlet监听器笔记总结

    监听器Listener的概念 监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...

  4. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  5. servlet 简介,待完善

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  6. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  7. servlet使用入门

    创建web工程servlet,然后新建TestServlet.java package com.xmyself.servlet; import java.io.IOException; import ...

  8. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

  9. [Servlet] 初识Servlet

    什么是Servlet? 定义 Servlet的全称是 Server Applet,顾名思义,就是用 Java 编写的服务器端程序. Servlet 是一个 Java Web开发标准,狭义的Servle ...

  10. Java Servlet+Objective-c图上传 步骤详细

    一. Servlet 1.创建图片保存的路径 在项目的WebContent下创建一个上传图片的专属文件夹. 这个文件夹创建后,我们保存的图片就在该文件夹的真实路径下,但是在项目中是无法看到上传的图片的 ...

随机推荐

  1. DataGridView 分页显示

    DataGridView 分页显示函数 1.获取当前页的子数据表函数 public static DataTable GetPagedTable(DataTable dt, int PageIndex ...

  2. Nodejs加密php解密

    var crypto = require('crypto'); function decode(cryptkey, iv, secretdata) { var decipher = crypto.cr ...

  3. MQ 2035(MQRC_NOT_AUTHORIZED)

    当使用MQ7.1或7.5时,如果使用MQ管理员账号去连接MQ服务器,可能会报以下的错误,提示你权限不足. 2035 MQRC_NOT_AUTHORIZED 在之前的版本中是没有这个问题的. 原因是在7 ...

  4. 【Entity Framework】初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...

  5. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    今天用PL/SQL连接虚拟机中的Oracle数据库,发现报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,也许你也遇到过,原因如下: oracle安装成功后,一直未停止 ...

  6. OC 数据类型之间的转换方法

      NSNumber转NSString: 假设现有一NSNumber的变量A,要转换成NSString类型的B 方法如下: NSNumberFormatter* numberFormatter = [ ...

  7. python 知识 rstrip,strip,lstrip

    rstrip,strip,lstrip 作用:去除字符串中的空格或指定字符 一.默认用法:去除空格str.strip()  : 去除字符串两边的空格str.lstrip() : 去除字符串左边的空格s ...

  8. uva 10780

    曾经做过一个类似的  求n!中有多少个质因子m 这里有一个结论 k = n/m+n/(m^2)+n/(m^3)+.... int getnum(int n, int m) { int sum = 0; ...

  9. python参考手册--第8章

    1.模块和import (1)首次import module会做以下3件事: a)创建新的命名空间,用作在该源文件中定义的所有对象的容器.在模块中定义的函数和方法在使用global语句时将访问该命名空 ...

  10. IDS 日志分析

    [http://blog.csdn.net/cnbird2008/article/details/5792626] General Approach通用方法1. Identify which log ...