韩顺平servlet笔记(个人总结版)
韩顺平-细说servlet-笔记

◆背景知识介绍J2EE的13种技术java->servlet->jsp [技术总是有一个演变过程]zip粘贴到word设置◆回顾一下我们现有的技术java 基础(面向对象,集合,界面,线程,文件,网络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发) ->网页设计xmlserlvet+jsp ->java web开发[使用java技术做web开发]◆java ee 体系的介绍◆servlet项目演示◆web 开发介绍①静态页面(html)②动态页面1.用户可以输入数据,和页面交互(注册,购物,发帖子,付款...)2.不同时间打开页面,内容是变化.3.目前比较流行的左动态页面的技术( servlet/jsp , php , , asp, cgi )◆动态网页技术的比较(了解)◆bs 和cs的比较(1)BS:browser server 浏览器服务器(2)cs client server 客户服务为什么需要的web服务器/web究竟是干什么的?模拟一个web服务器MyWebServer.javaimport java.io.*;import .*;public class MyWebServer{public static void main(String []args) throws Exception{ServerSocket ss=new ServerSocket(80);Socket s=ss.accept();//提示一句话System.out.println("在9999 上等待连接...");OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html"));String buf="";while((buf=br.readLine())!=null){os.write(buf.getBytes());}//关闭流br.close();os.close();s.close();}}◆通过tomcat来讲解BS结构◆安装tomcat服务器(1)解压即可(2)配置①在环境变量中添加JAVA_HOME= 指向你的jdk的主目录(并不是bin文件目录)②在不配置JAVAHOME的前提下启动tomcat 在startup.bat的第25行中添加set JAVA_HOME=JKD路劲(3)启动tomcat服务器到tomcat 主目录下bin/startup.bat(4)验证是否安装成功http://localhost:8080(8080是默认端口如果该端口已经被占用需要修改端口)◆tomcat安装后问题解决(1)tomcat无法正常启动的原因分析1.JAVA_HOME 配置错误,或者没有配置2.如果你的机器已经占有了8080 端口,则无法启动,解决方法(1) 你可以8080 先关闭netstat –annetstat –anb 来查看谁占用该8080(2) 主动改变tomcat的端口.到conf/server.xml 文件中修改<Connector connectionTimeout="20000" port="8088"(去修给config->server.xml的端口号)protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>(3) 能够正常启动,但是会导航到另外一个页面.去修改工具->管理加载项,把默认的导航给禁用即可.(4) 在访问tomcat时候,一定保证tomcat 服务器是启动◆tomcat的目录结构文件bin: 启动和关闭tomcat的bat文件conf: 配置文件-->server.xml: 该文件用于配置和server 相关的信息, 比如tomcat启动端口后,配置Host, 配置Context 即web应用-->web.xml : 该文件配置与web应用(web应用就相当于是一个web站点)-->tomcat-users.xml: 该文件用户配置tomcat 的用户密码和权限lib目录: 该目录放置运行tomcat 运行需要的jar包logs目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动tomcat错误时候,可以查询信息.webapps目录: 该目录下,放置我们的web应用(web 站点), 比如:建立web1 目录下面放置我们的html 文件jsp 文件..图片... 则web1就被当做一个web应用管理起来(☞特别说明tomcat 6.0 以后支持tomcat 5 版本还有别的设置)work: 工作目录: 该目录用于存放jsp被访问后生成的对应的server文件和.class文件如何去访问一个web 应用的某个文件◆首页面设置及目录规范结构现在我们要求:把hello.html文件设置成该web应用的首页,则需要把web应用的目录格式做的更加规范:①在web文件夹下配置WEB-INF文件夹②在web.xml 文件中添加配置的代码:<welcome-file-list><welcome-file>hello1.html</welcome-file></welcome-file-list>③通过http://localhost:8088/web1来访问hello1.htmlweb-inf目录下的classes目录将来是存放class文件lib 目录将来时存放jar文件web.xml 配置当前这个web应用的信息.◆tomcat如何去管理虚拟目录需求: 当我们把web 应用放到webapps目录,tomcat会自动管理,如果我们希望tomcat 可以管理其它目录下的web应用?->虚拟目录配置我在d 盘有一个web应用.◆虚拟目录配置步骤:①找到server.xml文件②编辑host节点添加Context path在server.xml中添加:<Context path="/myweb2" docBase="d:\web2"/>myweb2:是访问时输入的web名,实际取出的是web2中的资源"d:\web2":绝对路径下web2中存放资源如:hello2.html实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个文件相对路径:从该文件位置去找另一个文件③需要重启tomcat,才能生效.(因为是采用的dom技术讲信息加载到内存中)◆context 的几个属性的说明path:docbase:reloadable;如果设为ture ,表示tomcat 会自动更新web应用,这个开销大,建议在开发过程中,可以设为true, 但是一旦真的发布了,则应当设为false;upackWAR: 如果设为ture ,则自动解压,否则不自动解压.①:打war包cd:d/web2 然后jar –cvf web2.war *②:浏览打好的war包Deploy发布后会在webapps中自动生存改文件◆配置域名我们看和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用http://localhost:8080/web应用/资源名的方式去访问网站,实际上使用类似或者的方式去访问网站,这个又是怎么实现的呢?看看ie浏览器访问一个web站点的流程.实现的步骤如下:(1) 在C:\WINDOWS\system32\drivers\etc 下的host文件添加127.0.0.1 (2) 在tomcat 的server.xml文件添加主机名<Host name="" appBase="d:\web3”><Context path="/" docBase="d:\web3" /></Host>(3) 在d:\web3 加入了一个/WEB-INF/web.xml 把hello2.html设为首页面如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.(4) 重启生效◆tomcat体系的再说明图:如何配置默认主机:在tomcat/conf/server.xml 文件<Engine name="Catalina" defaultHost="主机名">如:<Engine name="Catalina" defaultHost="">◆为什么需要servlet技术?比如需求:我们希望用户可以贴,用户还可以回复....这样一些和用户可以交互的功能,用普通的java技术就完成不了, sun 就开发了servlet技术供程序员使用.◆servlet的介绍①servlet 其实就是java程序(java类)②该java 程序(java 类)要遵循servlet开发规范③serlvet是运行在服务端④serlvet 功能强大,几乎可以完成网站的所有功能⑤是学习jsp基础◆tomcat 和servlet 在网络中的位置servlet的生命周期是怎样的/servlet究竟是怎样工作的UML 时序图帮助大家理解参看execel面试题: 请简述servlet的生命周期(工作流程)答:标准版本:①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。
Servlet学习笔记

Servlet学习笔记Java相关课程系列笔记之九笔记内容说明Servlet(程祖红老师主讲,占笔记内容100%);目录一、Servlet概述 (1)1.1 B/S架构(了解) (1)1.2什么是Servlet (1)1.3什么是Tomcat (2)1.4如何写一个Servlet(不使用开发工具) (3)1.5使用MyEclipse开发Servlet (5)1.6 Servlet是如何运行的 (6)1.7常见错误及解决方式 (6)1.8案例:根据请求次数显示结果和显示当前时间 (7)二、HTTP协议 (8)2.1什么是HTTP协议 (8)2.2通讯的过程 (8)2.3数据格式 (8)2.4 TCP/IP Monitor的使用 (9)2.5 get请求与post请求 (9)2.6如何读取请求参数 (9)2.7访问数据库(MySql) (10)2.8案例:添加员工(访问MySql数据库) (10)2.9异常:IllegalStateException (11)三、编码问题 (12)3.1 Java语言在内存当中默认使用的字符集 (12)3.2编码 (12)3.3解码 (12)3.4 Servlet如何输出中文 (12)3.5如果表单有中文参数值,也需要注意编码问题 (12)3.6案例:根据请求正确显示中文 (12)3.7将中文数据插入到数据库 (13)四、重定向 (14)4.1什么是重定向 (14)4.2如何重定向 (14)4.3注意两个问题 (14)4.4两个特点 (14)4.5重定向原理图:以2.8案例为例 (14)五、DAO (15)5.1什么是DAO (15)5.2如何写一个DAO (15)5.3工厂类 (15)六、工厂设计模式 (16)6.1什么是工厂 (16)6.2使用工厂设计模式的好处 (16)6.3如何使用工厂模式 (16)6.4案例:为2.8案例添加新功能,并使用DAO和工厂模式 (16)1七、Servlet容器处理细节 (20)7.1 Servlet容器如何处理请求资源路径以及匹配 (20)7.2一个Servlet如何处理多种请求 (20)八、Servlet的生命周期 (21)8.1 Servlet的生命周期的含义 (21)8.2 Servlet生命周期的四个阶段 (21)8.3实例化 (21)8.4初始化 (21)8.5就绪 (21)8.6销毁 (22)8.7 Servlet生命周期图 (22)8.8 Servlet生命周期相关的几个接口与类 (22)九、JSP(简要介绍,详细内容见JSP笔记) (24)9.1什么是JSP (24)9.2为什么要使用JSP (24)9.3 JSP与Servlet的关系 (24)9.4如何写一个JSP文件 (24)9.5 JSP是如何运行的 (24)9.6指令 (24)9.7案例:创建emplist.jsp页面,将表示逻辑交给JSP处理 (25)十、请求转发 (27)10.1什么是转发 (27)10.2如何转发 (27)10.3编程需要注意的两个问题 (27)10.4转发原理图 (27)10.5转发的特点 (28)10.6转发和重定向的区别 (28)10.7何时用重定向 (28)10.8何时用转发 (28)10.9案例:修改6.4案例中step7中的ListEmpServlet.java (29)十一、异常的处理 (31)11.1用输出流out (31)11.2用转发的方式 (31)11.3让容器处理系统异常 (31)11.4案例:将10.9案例中的step3中的所有catch块修改 (31)十二、路径问题 (32)12.1什么是相对路径 (32)12.2什么是绝对路径 (32)12.3如何写绝对路径 (32)12.4如何防止硬编码 (32)12.5案例:相对、绝对路径对比 (32)12.6四种情况下,正确的绝对路径写法 (33)十三、状态管理 (34)13.1什么是状态管理 (34)213.3 cookie (34)13.4如何创建一个cookie (34)13.5查询cookie (34)13.6编码问题 (35)13.7 cookie的生存时间 (35)13.8 cookie的路径问题 (35)13.9 cookie的限制 (36)13.10案例:写一个CookieUtil (36)13.11 session(会话) (37)13.12如何创建一个session对象 (37)13.13 HttpSession接口中提供的常用方法 (37)13.14 session的超时 (38)13.15用户禁止cookie以后,如何继续使用session (38)13.16 url重写 (38)13.17 session的优点 (38)13.18 session的缺点 (39)13.19案例:session验证和访问次数 (39)13.20案例:验证码 (40)13.21案例:购物车 (42)十四、过滤器 (46)14.1什么是过滤器 (46)14.2如何写一个过滤器 (46)14.3案例:敏感字过滤器 (46)14.4过滤器的优先级 (47)14.5初始化参数 (48)14.6优点 (48)十五、监听器 (49)15.1什么是监听器 (49)15.2容器会产生两大类事件 (49)15.3如何写一个监听器 (49)15.4 ServletContext(Servlet上下文) (49)15.5如何获得Servlet上下文 (49)15.6 Servlet上下文的作用 (49)15.7案例:统计在线人数 (50)十六、上传文件 (52)16.1如何上传文件 (52)16.2案例:上传文件 (52)十七、Servlet线程安全问题 (54)17.1为何Servlet会有线程安全问题 (54)17.2如何处理线程安全问题 (54)十八、Servlet小结 (55)18.1 Servlet基础 (55)18.2 Servlet核心 (55)318.4数据库访问 (55)18.5过滤器和监听器 (55)18.6典型案例和扩展 (55)十九、其他注意事项 (56)19.1连接数据库的工具 (56)19.2知名网站 (56)19.3 C/S架构:Client/Server (56)19.4 B/S架构:Browser/Server (57)4一、Servlet概述1.1 B/S架构(了解)1)什么是B/S架构客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。
Servlet笔记

目录第一章服务器环境搭建 (2)1.Tomcat服务器环境搭建 (2)2. tomcat文件结构 (2)第二章Servlet (3)1.定义: (3)2.servlet的生命周期 (3)3.使用MyEclipse创建servlet流程 (3)4.Web Project文档目录说明 (4)5.web.xml的配置归纳 (4)[1]配置servlet类 (4)[2]配置Servlet的实例化顺序: (5)[3]配置初始化参数 (5)[4]配置ServletContext (5)[5]配置Session有效时间 (6)6. doget()和dopost()向servlet发送请求的区别 (6)7.servlet的类和接口 (6)7.1javax.servlet包: (7)(1)Servlet接口: (7)(2)ServletConfig接口:servlet 配置对象 (7)(3)ServletContext接口:ServletContext(服务器-公共空间) (8)(4) ServletRequest接口: (9)(5)ServletResponse接口: (10)(6) Filter接口:过滤器 (10)(7) ServletContextListener接口:监听器 (12)7.2javax.servlet.http包: (14)(1) HttpSession接口:session(服务器-浏览器空间) (14)(2)HttpServletRequest接口 (15)(3)HttpServletResponse接口 (15)(4) HttpServlet类 (15)(5) Cookie类 (16)第三章常用技术归纳 (17)1.参数传递归纳: (17)2.在Servlet中操作数据库 (18)3.分页显示技术 (18)4.数据库连接池技术 (18)第一章服务器环境搭建1.Tomcat服务器环境搭建(1)环境变量配置①java-path: //配置JDK②tomcat-path: //配置服务器主目录(2)服务器端口配置在server.xml文件中Connector标签:四位数,最多65523,但一般网络用80开头(3)启动服务启:执行Bin目录下的startup.bat脚本文件。
servlet方面的笔记

一、Servlet基础1、什么是servlet?2、servlet的优点?3、什么是servlet容器?4、怎么写一个servlet?二、Servlet核心1、核心的接口与类ServletGenericServletHttpServletServletRequest,ServletResponseHttpServletRequest,HttpServletResponseServletConfigServletContext2、HttpServletRequest,HttpServletResponse的常用方法request.getParameter();request.getParameterValues();request.getSession(); request.getSession(boolean);request.getRequestURI();request.setAttribute(), getAttribute(),removeAttribute(); request.getRequestDispatcher();request.setCharacterEncoding();request.getCookies();response.getWriter();response.setContentType();response.sendRedirect();response.encodeURL(), encodeRedirectURL();response.addCookie();3、表单处理(1)如何获得表单中数据(2)表单中,有中文,如何处理(3)表单的提交方式4、比较get,post提交方式链接、表单默认提交方式、地址栏直接输入:get方式对于method="post" 是post方式。
此外,还要知道两者之间的不同,查笔记。
5、重定向与转发(1)什么是重定向、重定向的特点(2)编程(3)什么是转发,转发的特点(4)转发的编程(5)比较二者之间的不同。
Servlet笔记

Servlet编程Java语言的一大特色是面向对象的网络编程,那么它的网络编程的优势体现哪里呢?如Socket编程、Web编程等,在JSP技术产生之前要用Java实现Web编程,就得用Servlet。
那么Servlet到底是个什么东西呢?一、静态网站和动态网站1、静态网站静态网站主要是由一些静态网页有机组合而成的,主要采用了html、css、Javascript等Web开发的前端技术(用于浏览器端的技术),完成客户端信息的显示和提交信息的客户端验证,都是基于HTTP协议的静态页面。
HTTP是一种协议、一种标准。
在B/S结构中,主要是通过HTTP协议来完成用户的请求(request)和服务器的响应(response)(无论采用get或post方式都是基于http协议完成数据的传输)。
要完成B-S 的交互,首先B要向S请求,然后S端根据请求产生结果,再把这个结果返回给B,那么,在S端的产生结果的功能若用Java编程实现,是怎样实现的呢?2、动态网站动态网站是客户端的信息是根据用户需求动态地由服务器提供用户的网站,它主要采用了JSP/Servlet、ASP、PHP、CGI等技术实现的。
在JSP技术产生之前,Java完成用户的动态响应主要是靠Servlet完成的。
二、Tomcat简介1、了解Tomcat1)Tomcat是Apache的开源项目,可登陆了解。
2)Tomcat是Web Application的服务器,那么应该对Tomcat有一个简单的了解。
2、Tomcat的安装或解压1)Tomcat安装(略)2)Tomcat安装目录下的各个子目录的简单说明1)bin:启动目录,主要有startup.bat(启动服务器)和stopdown.bat(关闭服务器);2)conf:配置文件所在目录,其中主要有server.xml(可以配置服务器监听的端口),tomcat-users.xml,context.xml文件;3)lib:包目录,包括服务器启动必须的包目录和一些用户自己可以放置的包目录(供web应用使用);4)logs:日志目录,包括catalina.log,localhost.log,host-manager.log,主要记录系统启动和关闭日志,已经一些管理日志和异常信息;5)temp:临时目录存放Tomcat运行时产生的临时文件;6)webapps:默认的放置web应用的目录(可以在conf/server.xml中修改,还可以增加新的web应用发布目录);7)work:工作目录,jsp和servlet生成的.java文件和由此编译好的.class文件默认都放置在此目录下(可以在conf/context.xml中修改)3、环境变量JA V A_HOME的配置JA V A_HOME变量的作用,这个变量用于设置JDK的安装根目录,对它的设置方式有三种:1)在命令行设置:set java_home=jdk的安装根目录,只对这次的命令窗口有效,启动Tomcat也要在该窗口下;下次重启了命令窗口,还得重新设置,重新启动Tomcat。
韩顺平servlet笔记2完整版

out.println("name ="+val); session 为什么有? 问题 1: 如何实现在不同的页面,可以去查看信息(比如说购物车),同时还要实现不同的用 户看到的信息是自己. session 工作原理图
session 的生命周期是 30 分钟
session 小结:
① session 是存在服务器的内存中 ② 一个用户浏览器,独享一个 session 域对象 ③ session 中的属性的默认生命周期是 30min ,你可以通过 web.xml 来修改 ④ 3 种 session 生命周期的设置 (1)一个地方是 tomcat/conf/web.xml
③ cookie 存放中文,怎么处理 存放: String val=.URLEncoder.encode("顺平","utf-8");
Cookie cookie=new Cookie("name",val); 取出: String val=.URLDecoder.decode(cookie.getValue(), "utf-8");
mycookie.setMaxAge(7*3600*24);//保存一周
response.addCookie(mycookie);
b=true;
break;
韩顺平servlet与jsp 笔记与心得
∙韩顺平 servlet与jsp 笔记与心得∙∙∙∙Java EE概述:Java EE是一个开放的平台,它包括的技术很多,主要包括十三种核心技术(java EE就是十三种技术的总称)。
建立一个整全的概念。
J2ee的十三种技术(规范)1.java数据库连接(JDBC)。
——JDBC定义了4种不同的驱动:1.JDBC-ODBC桥,2.JDBC-native驱动桥3,JDBC-network桥4.纯java驱动。
2.Java命名和目录接口(JNDI)(它是为了对高级网络应用开发中的使用的目录基础结构的访问。
)。
3.企业Java Beans(Enterprise Java Beans,EJB)(它提供了一个架构来开发和配置到客户端的分布式商业逻辑,因此可以明显减少开发扩展性、高度复杂企业应用的难度。
)。
4.JavaServer Pages(JSPs)。
5.Java servlets(servlets提供的功能大部分与JSP相同,JSP中大部分是HTML代码,其中只有少量的Java代码,而servlets则相反,它完全使用Java编写,并且产生HTML代码。
)。
6.Java IDL/CORBA(用得不多)。
7.Java 事务体系(JTA)/Java事务服务(JTS)(用得不多)。
8.JavaMail和JavaBenas激活架构(JavaBeans ActivationFramework,JAF)。
(JavaMail是一个用来访问邮件服务的API)。
9.Java信使服务(Java Messaging Service,JMS)(JMS是一个用来和面向信息的中层通信的API)。
10.扩展标记语言(Extensible Markup Language,XML)。
11.12. 13当前流行的及格框架struts+hibernate+spring(ssh).Java ee的开发环境(eclipse)Eclipse是一个开源的、可扩展的集成开发环境,已经成为目前最流行的j2ee 开发工具。
servlet笔记
MyEclipse 和 Eclipse中Servlet的区别: Eclipse中 doget() dopost() 默认的构造器 4.Servlet中实用的几个对象:五大神器与jsp的九大内置对象没有区别 httpservletRequest :是由Tomcat给实例化的(ps:页面上的request 也是由Tomcat实例化的) HttpservletRequest和jsp页面上的request是 一样的 httpserveltResponse:HttpservletResponse和jsp页面上的 response是一样的 httpsession : httpsession = session ,不同在于 session是内置 对象,可以直接使用 而 httpsession 的获得方式为:HttpSession session=request.getsession(); 因为pagecontext的生命周期只存在于jsp页面中,所以 pagecontext对象是jsp独有的 servletContext: servletContext = application 只是在servlet中 叫法不一样 Cookie:就是我们本地的一个文件,用来记录我们浏览器的一些信息 将我们的信息写入到cookie中去 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String login=request.getParameter("login"); System.out.println(login); String username=request.getParameter("username"); String password=request.getParameter("password"); System.out.println(username); System.out.println(password); if(login.equals("login")){ Cookie cookie=new Cookie("username",username); Cookie cookie2=new Cookie("password",password); System.out.println(cookie.getValue()); System.out.println(cookie2.getValue()); cookie.setMaxAge(60*60*24*14); cookie2.setMaxAge(60*60*24*14); response.addCookie(cookie); response.addCookie(cookie2);
Servlet笔记
Servlet笔记相关知识点:补充⽹络协议:这些内容⾃Servlet中是可以被操作的;当然在HTML之中也是可以设置的(head)。
在搞验证码的时候,要刷新验证码的时候,需要访问服务器的Servlet,但是我们知道访问是根据HTTP协议的,⽽这种⽅式去请求服务器前,会检查本地有没有这个请求的响应,如果有就从缓存中读取上次的响应的内容,如果这样更新验证码的时候每次都从缓存中取值了,所以⼀般在刷新请求的时候后⾯添加⼀些随机参数,避免重复请求⽽导致从缓存中取到上次的值。
⼀、Servlet概述:1、http的报头很有⽤,servlet接受到被http协议修饰过的请求,请求和http相关的信息都可以被servlet拿到处理,当然也可以对相应中的内容和http处理。
2、servlet可以不要忘了,init⽅法执⾏前,也就是在服务器启动时候,浏览器未访问前预处理些东西。
3、对servlet来说,记住⼀句话:从客户端发出的请求(http+请求),可以被servlet接受和响应,同时请求信息通常是可以在⼀个共享容器(ServletContext)内存储和取出。
4、Servlet接⼝->GenericServlet⼦类->HttpServlet孙⼦类5、Servlet是⼀个在服务器端运⾏的JAVA类,其实是服务器通过反射得到的类,因为利⽤反射才能得到类,所以必须给出类名(在web.xml中配置,服务器在通过解析XML⽂件得到类名,在反射出类,调⽤其⽅法);客户端发出请求,是以http协议发出,因此服务器必须能够解析http和封装的信息,为了更好的⽅便信息的传递,服务器按照servlet协议实现⼀系列的“⼩功能”,ServletContext/包括JSP的内置对象;利⽤这些“⼩功能”,不同的功能处理不同内容,例如:response负责封装详响应内容(包括http相关),客户端传递过来的信息被request封装处理(包括http相关),全局容器ServletContext,代表当前WEB应⽤,所有Servlet共享和request对象都是域对象可以封装数据;它可以获取WEB全局初始化参数、数据共享、访问资源⽂件:因为我们的程序是放在服务器上的,通常我们不关⼼⽂件等资源的路径,但是我们要操作⽂件,没有路径怎么处理,ServletContext就提供两种⽅法:Properties pro= new Properties();//这⾥使⽤getResourceAsStream来读取⽂件pro.load(getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"));//这⾥使⽤的传统输⼊流读取⽂件,⾸先还需要⽤到ServletContext对象获取真实⽂件路径才⾏pro.load(new FileInputStream(getServletContext().getRealPath("/WEB-INF/classes/db.properties")));这些封装的过程都是服务器⾃动按照servlet协议⾃动完成,最后我们只需要拿着这些封装好的内置对象使⽤即可;public class PubServlet extends HttpServlet {@Overridepublic void init() throws ServletException {System.out.println("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓<ABO初始化:预处理开始>↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");String servletName=getServletConfig().getServletName();System.out.println("ABO:---->servletName:【"+servletName+"】");Enumeration <String > enums=getServletConfig().getInitParameterNames();while(enums.hasMoreElements()){String param=enums.nextElement();String passvalue=getInitParameter(param);System.out.println("ABO:---->ParameterValues:【"+passvalue +"】");}getServletContext().setAttribute("num", 0);System.out.println("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑<ABO初始化:预处理结束>↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();System.out.println("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓<ServletContext⽰例开始>↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");System.out.println("ServletContext:1.获取WEB全局初始化参数。
韩顺平servlet笔记(完整代码)
目录一、前序工作 (2)二、Classes文件写一个Hello.java (2)写java文件 (2)配置web.xml文件 (3)上网验证 (4)三、写登陆界面 (4)写java文件 (5)配置web.xml文件 (7)上网验证 (7)四、同一用户的不同页面共享数据 (8)用sendRedirct()方法实现 (8)用隐藏表单实现 (11)Session (11)五、Servlet链接数据库 (13)建数据库的表 (13)写java文件 (13)放jar包 (16)Sql注入漏洞 (16)六、Servlet中显示图片 (18)七、分页技术 (19)八、cookie (24)使用cookie保存用户名,密码,在一定时间不用重复登陆 (24)删除cookie (29)九、网站框架 (30)十、ServletContext (38)网站计数器 (39)优化 (40)用户ip地址 (42)十一、界面美化 (42)十二、tomcat配置 (59)如何修改tomcat端口 (59)如何设置虚拟目录 (60)如何给tomcat的管理员设置密码 (61)如何设置数据源和连接池 (62)附录 (63)Jcreator不能导入javax.servlet包问题 (63)本文数据库数据库 (64)本文Web.xml文件配置 (64)一、前序工作Tomcat安装好后再webapps文件夹下新建mywebsite,里面包括WEB-INF,在里面是classes,lib和web.xml 文件。
Jcreator配置好jdk路径后servlet也需要导入,configure—>options—>jdkprofile,选中jdk vension,点edit—>add add achieve,选择tomcat里lib下的servlet-api,就ok了。
详细看附录。
二、Classes文件写一个Hello.java写java文件有三种方法:/*使用实现servlet接口的方式开发(不全)package com.tsinghua; //一个自定义的包import javax.servlet.*;import java.io.*;import java.io.IoException;public class Hello implements Servlet{//该函数用于初始化servlet(类似与构造函数)//该函数只会被调用一次public void init(ServletConfig parml) throws ServletException {System.out.println("init it");}public ServletConfig getServletConfig(){return null;}//这个函数用于处理业务逻辑//程序员应该把业务逻辑代码写这里//这个函数当用户每访问servlet时,都会被调用//req:用于获得客户端(浏览器)信息 res:用于向客户端(浏览器)返回信息public void service(ServletRequest req,ServletResponse res)throws ServletException{ System.out.println("service it");//从res中得到printWriterPrintWriter pw=res.getWriter();pw.println("hello,world");}public void destroy(){}}//方法二,继承GenericServlet(不全)package com.tsinghua;import javax.servlet.GenericServlet;import javax.servlet.*;import java.io.*;public class HelloGenen extends GenericServlet{//重写service方法public void service(ServletRequest req,ServletResponse res){//返回hello,worldtry{PrintWriter pw=res.getWriter();pw.println("hello,world,generc");}catch (Exception ex){ex.printStackTrace();}}}*///方法三,继承HttpServlet开发package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Hello extends HttpServlet{//处理get请求public void doGet(HttpServletRequest req,HttpServletResponse res){//业务逻辑try{PrintWriter pw = res.getWriter();pw.println("hello http");}catch (Exception ex){ex.printStackTrace();}}public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}}配置web.xml文件这个web.xml文件可以从旁边文件夹里拷来,主要改写的部分如下<servlet><servlet-name>hello</servlet-name><servlet-class>com.tsinghua.Hello</servlet-class></servlet><!-- Define the Manager Servlet Mapping --><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>上网验证先打开apache-tomcat-8.5.8\bin下的startup.bat,然后登陆下面地址,看manager里有没有mywebsite,若runing是true则ok再登陆下面地址看看是否成功显示了hello,成功了三、写登陆界面写java 文件登陆界面包含三个java 文件,用sendRedirect 进行跳转,其中还包括了html 语言,表单知识,详细看下面Login.java/*** @(#)Login.java * ** @author* @version 1.00 2017/2/10 *///登陆界面package com.tsinghua;import javax.servlet.http.*; import java.io.*;public class Login extends HttpServlet{public Login() { }//处理get 请求public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑 try { //中文乱码解决方法 res.setContentType("text/html;charset=gbk");PrintWriter pw = res.getWriter(); //返回登陆界面pw.println("<html>"); pw.println("<body>");pw.println("<h1>登陆界面</h1>");pw.println("<form action=logincl method=post>");pw.println("用户名:<input type=text name=usrname><br>"); pw.println("密码:<input type=password name=passwd><br>"); pw.println("<input type=submit value=loging><br>"); pw.println("</form>"); pw.println("</body>"); pw.println("</html>"); }catch (Exception ex){ ex.printStackTrace(); } }public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } }LoginCl.java/*** @(#)Login.java*** @author* @version 1.00 2017/2/10*///验证(登陆处理)package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class LoginCl extends HttpServlet{public LoginCl() {}//处理get请求public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑try{//接受用户名和密码String u=req.getParameter("usrname");String p=req.getParameter("passwd");//验证if(u.equals("sp")&&p.equals("123")){//合法//跳转(welcome)res.sendRedirect("welcome");}else{//不合法//跳转(回原界面)res.sendRedirect("login");//写url}}catch (Exception ex){ex.printStackTrace();}}public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res);}}Welcome.java/*** @(#)Welcome.java*** @author* @version 1.00 2017/2/10*///欢迎界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Welcome extends HttpServlet{public Welcome() {}//处理get请求public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑try{//输出weclcomePrintWriter pw=res.getWriter();pw.println("welcome");}catch (Exception ex){ex.printStackTrace();}}public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}}配置web.xml文件再之前的web.xml文件里增加如下<servlet><servlet-name>login</servlet-name><servlet-class>com.tsinghua.Login</servlet-class></servlet><!-- Define the Manager Servlet Mapping --><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping><servlet><servlet-name>logincl</servlet-name><servlet-class>com.tsinghua.LoginCl</servlet-class></servlet><!-- Define the Manager Servlet Mapping --><servlet-mapping><servlet-name>logincl</servlet-name><url-pattern>/logincl</url-pattern></servlet-mapping><servlet><servlet-name>welcome</servlet-name><servlet-class>com.tsinghua.Welcome</servlet-class></servlet><!-- Define the Manager Servlet Mapping --><servlet-mapping><servlet-name>welcome</servlet-name><url-pattern>/welcome</url-pattern></servlet-mapping>上网验证登陆下面地址,看manager里有没有mywebsite,若runing是true则ok四、同一用户的不同页面共享数据用sendRedirct()方法实现实现在welcome界面显示登录用户的姓名以上三个java文件中LoginCl和Welcome文件进行修改LoginCl.javaWelcome实现在welcome界面显示登录用户的姓名和密码以上三个java文件中LoginCl和Welcome文件进行修改LoginClWelcome结果图:隐藏数据:、用隐藏表单实现SessionSession:浏览器访问服务器时,服务器内存为浏览器分配的空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一课第二课tomcat 简单模拟package com.my.first;import java.io.*;import .*;publicclass Mytomcat {/*** @param args*/publicstaticvoid main(String[] args) throws Exception {ServerSocketss = new ServerSocket(9999);Socket s = ss.accept();System.out.println("在9999上等待。
");OutputStreamos =s.getOutputStream();BufferedReaderbr = new BufferedReader(new FileReader("f:\\hello.html"));String str="";while((str = br.readLine())!=null){os.write(str.getBytes());}br.close();os.close();s.close();// ss.close();}}在浏览器中输入 http://localhost:9999 就会出现“hello world”第三课启动tomcat 各种问题总结第四课第五课虚拟目录如在f盘存放着各种web应用,但是空间不够了,这是我在d盘弄个文件当做该web应用的文件。
但是要在server.xml中指定一下。
步骤:1、在那个磁盘下建立“f:\web2”,并建立相关的资源文件2、在server.xml中配置 <Contextpath=”/web2”docBase=”f:\web2”>ps: path中的“/web2”是什么,在地址中就输入什么。
http://localhost:8080/web2/hello2.htmlcontext 能配置的属性 path、docBase、reloadable(有改变就重启tomcat)、unpackWAR配置自己的主机名步骤:1、C:\Windows\System32\drivers\etc hosts配置。
2、在server.xml中配置<Host name="" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><context path=””docBase=””/> //添加别的目录。
</Host>第六课<Engine name="Catalina" defaultHost="localhost">Engine 下有多个host,可以指定默认的host 用defaultHost指定。
在输入12.0.0.1的时候它会找默认的host。
第七课Servlet的开发1、实现Servlet接口2、继承GenericServlet类3、继承HttpServlet类package com.my.first;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;publicclass MyServlet implements Servlet{@Overridepublicvoid destroy() {// TODO Auto-generated method stub}@Overridepublic ServletConfiggetServletConfig() {// TODO Auto-generated method stubreturnnull;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturnnull;}@Overridepublicvoid init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub}@Overridepublicvoid service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stub}}第八课实验:在webapps下建立项目wang,WEB-INF =》classes、lib、web.xml 把写好的类MyServlet 放在classes下,包括类的包。
第九课第十课继承GenericServlet 的servlet,只要重写server()方法即可。
继承HttpServlet 来开发servlet。
常用继承这个类的的servlet 一般要重写doGet(),doPost()方法。
可能会出现的JDK版本不一致的情况,就会报错一个注册好的servlet 能被多个映射Servlet细节一、在<url-pattern>/abc.html</url-pattern> 并不是一个html文件,只是一种特殊的路径其实和/abchtmlxxx没有任何区别。
就是一个路径名。
(假象)二、 <url-pattern>/abc/cbd/xxx</url-pattern> 可以多层路径。
三、通配符的映射路径。
*.扩展名或者/*四、①如果一个请求同时匹配多个servlet,匹配度高的那个会被映射到。
② *.do的匹配度最低。
当出现*.do 和/* 同时匹配,/*的匹配度比*.do高。
第十二课<load-on-startup>1</load-on-startup> 1(几)代表被第1(几)个启动的servlet,这往往用于自启动、初始化的时候。
自动发送邮件问题<servlet><servlet-name>xxx<servlet-name><servlet-class>com.xxx.xx.wang<servlet-class><load-on-startup>1</load-on-startup></servlet>系统会自动加载这个servlet。
如果这个servlet 里面的方法每分钟扫描下该定时发送的邮件,那就能实现邮件的定时发送了。
servletConfig通过this.getServletConfig().getInitParameter(“encoding”)获得<param-value>的内容。
第十四课request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码前者是设置动态文字(参数,数据库),后者设置页面静态文字response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码.response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.response.setContentType设置发送到客户端的响应的内容类型,可以包括字符编码说明.也就是说在服务器端坐了这个设置,那么他将在浏览器端起到作用,在你打开浏览器时决定编码方式如果该方法在response.getWriter()被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。
该方法如果在response.getWriter()被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置 Content-type实体报头response.setCharacterEncoding设置响应的编码如果服务器端使用response.setContentType设置了编码格式,那么应该使用 response.setCharacterEncoding指定的编码格式,这样就会把之前的设置屏蔽掉一般建议设置response.setCharacterEncodingresponse.setContentType 经常会遇到失效的情况(设置了但是经常不起作用)小项目第十五课http协议基本结构;请求行消息投内容第十八、九课HttpServletRequest对象。
常用方法:getWrite()得到的是PrintWrite对象(返回字符数据) getOutputStream()(返回二进制码,对象,也可以是字符)区别:PS:这两个输出流(PrintWrite,outputStream)不能同时使用。
只能传递字符,不能传递对象传递对象用request.getSession().setAttribute(“”,xx);接收对象用request.getSession().getAttribute(“”);第二十课中文乱码发生中文乱码的三种情况:①表单提交的时候。
1.post提交:在提交的时候加上request.setCharacterEncoding(“utf-8/gbk等等”)Ps:post提交的东西封装到request对象里面去了,所有这样设置有用2、Ps:get提交的东西放在链接后面。
②超链接的时候如:<a href =?username=’王’>用处理get提交方法即可。