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

合集下载

韩顺平-细说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学习笔记

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笔记

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方面的笔记

一、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笔记

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完整版

韩顺平servlet笔记2完整版
制子 4k ② cookie 生命周期的再说明: 1. cookie 默认生命周期是会话级别 2. 通过 setMaxAge() 可以设置生命周期 setMaxAge(正数) , 即多少秒后该 cookie 失效 setMaxAge(0) ,删除该 cookie setMaxAge(负数), 相当于该 cookie 生命周期是会话级别.
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 笔记与心得

∙韩顺平 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笔记

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笔记相关知识点:补充⽹络协议:这些内容⾃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笔记(完整代码)

韩顺平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:浏览器访问服务器时,服务器内存为浏览器分配的空间。

韩顺平SQL_Server学习笔记

韩顺平SQL_Server学习笔记

SQL Server学习资料⏹表的管理---表名和列的命名⏹表的管理---支持的数据类型⏹表的管理----修改数据⏹表的管理---删除数据删除全部数据Delete from 表名;删除指定数据Delete from 表名where 字段名=‘值’and 字段名=‘值’建表:表的基本查询----简单的查询语句使用where子句:或者写成:如何使用like操作符(模糊查询):在where条件中使用in:使用is null的操作符:使用逻辑操作符号:使用order by子句:Select ename,(sal+isnull(comm.,0))*13 as 年薪from emp order by 年薪⏹表的复杂查询数据分组-max,min,avg,sum,count:Group by和having子句:对数据分组的总结:1)分组函数只能出现在选择列表,having,order by,子句中;2)如果在select语句中同时包含group by,having,order by,那么他们的顺序是group by,having,order by;3)在选择列中如果有列,表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则就会报错;如:select depot,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;这里deptno就一定要出现在group by中;⏹表的复杂查询----多表查询多表查询是指基于两个或两个以上表或是视图的查询或者:⏹表的复杂查询----子查询1)(子查询)是指嵌入在其它sql语句中的select语句,也叫嵌套查询。

2)(单行子查询)是指只返回一行数据的子查询语句3)(多行子查询)指返回多行数据的子查询⏹在from子句中使用子查询请思考:如何显示高于部门平均工资的员工的姓名,薪水,她部门的平均工资和部门编号分析:1,首先要知道各个部门的平均工资Select avg(sal),dept from emp group by deptno2,把上面的查询结果,当做一个临时表对待这里需要说明的:当在from子句中使用子查询时,该子查询会被作为一个临时表对待,当在from子句中使用子查询时,必须给子查询指定别名。

SQLServer2000笔记

SQLServer2000笔记

SQLServer2000笔记(韩顺平主讲)第一课理论、概念、安装等略过数字类型的数据类型的长度不是指字符个数,而是所占字节数字符类型的数据类型的长度是指字符个数GRANT:赋权限REVOKE:解除权限COMMIT:提交ROLLBACK:回滚不区分大小写select语句--1.查询工资低于10000的同志select * from hero where sal<10000;--2.把工资低于10000的人的工资提高10%(update)--语法update 表名set 字段名1=?,字段名2=? where 条件update hero set sal=sal*1.1 where sal<10000;--3.请删除性别为女的同志delete from hero where sex='女'小结:增(insert)、删(delete)、改(update)、查(select)(_下划线和汉字也可以开头)既然varchar如此智能为什么不抛弃char?什么时候用char?确切知道所用字段的长度,譬如电话号码、身份证号等这种定长的。

为什么要char? char查询时全字匹配,速度比varchar(一个一个比较)快!bit只存0和1(二进制)为什么小数不建议用float ?用float存小数会存进去很奇怪的小数如果非要用float,必须指定小数位数(范围1到53),否则极易产生很奇怪的数字,--推荐的小数保存类型numeric (共几位,其中小数占几位,如果不指定位数则自动表示整数) ,比如要求存放个人工资,单位元(20,2)--age后面没限定约束就代表默认不为空插入部分字段,则需要在表名后,指定字段列表!主键字段中插入时必须给值!如果是字符串就用单引号而不用双引号主键字段中已经存在的数值不能更改,但不存在的数值允许变更。

并没有改变空值不能用= null ,而用is null(单个条件)(多个条件)也可以用or为方便以后实践先建两张表,表结构如下:建议先建部门表(因为员工表的部门字段是从部门表引用的)插入数据:外键约束的威力体现:select *..... *号能不用尽量不用,因为数据量大的时候速度是很慢的,且浪费内存。

servlet总结(servlet总结)

servlet总结(servlet总结)

servlet总结(servlet总结)
servlet总结
基于java的._myself.servlet; import java.io.File; import java. ...
java中servlet的各种路径 1. l中路径,(叫它Servlet路径!) > 要么以“_”开关,要么为“/”开头 2. 转发和包含路径 > _____以“/”开头:相 ...
Servlet监听器笔记总结监听器Listener的概念监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...
servlet 简介,待完善什么是Servlet?① Servlet就是JAVA 类②Servlet是一个继承HttpServlet类的类③这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--java_. ...
servlet使用入门创建._myself.servlet; import java.io.IOE_ception; import ...。

Servlet学习笔记(六)-----Servlet之间的通信

Servlet学习笔记(六)-----Servlet之间的通信

Servlet学习笔记(六)-----Servlet之间的通信Servlet学习笔记(六)-----Servlet之间的通信这是4个Servlet之间的通信2. 代码如下:1)首先是test.htm文件,它作为客户端访问的页面&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;META http-equiv=Content-Type content="text/html; charset=gb2312"&gt;&lt;META content="Microsoft FrontPage 4.0"name=GENERATOR&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;CENTER&gt;&lt;H1&gt;Earnest Bank &lt;/H1&gt;&lt;/CENTER&gt;&lt;FORM action="http://127.0.0.1:8000/servlet/firstservlet" method=post&gt;enter your account Number here&lt;INPUT name=accnum size="21"&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;enter your pin Number here&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;INPUT name=pinnum size="21"&gt; &lt;BR&gt;&lt;p&gt;&lt;CENTER&gt;&lt;INPUT type=submitvalue=submit&gt;&lt;/CENTER&gt;&lt;/p&gt;&lt;/FORM&gt;&lt;/BODY&gt;&lt;/HTML&gt;2)第一个Servelt代码:(作用是检验用户输入account Number 和pin Number是否合法)import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.sql.*;///import javax.sql.*;public class FirstServlet extends HttpServlet{static Connection dbcon;static String resultToSecond="NA";protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException{try&#160;{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");dbcon=DriverManager.getConnection("jdbc:odbc:test","sa" ,"");System.out.println("Connection established");}catch(Exception e){System.out.println("Database not found!");}//Create a share attribute创建一个共享属性ServletContextcontext=this.getServletContext();context.setAttribute("accountNumber","");//得到从客户端发送过来的两个值String accnum=req.getParameter("accnum");String pinnum=req.getParameter("pinnum");//Check whether the accountnum and pinnum are validtry{PreparedStatementstat=dbcon.prepareStatement("select * from Login where cAccount_id=? and cPin_no=?");stat.setString(1,accnum);stat.setString(2,pinnum);ResultSetresult=stat.executeQuery();if(result.next()){resultToSecond=result.getString(1);context.setAttribute("accountNumber",resultToSecond);//the account i valid call the second servlet通过验证后使用RequestDispatcher接口//得到以URL为参数的Servlet的引用RequestDispatcher dispatcher=context.getRequestDispatcher("/secondservlet ");if(dispatcher==null){resp.sendError(resp.SC_NO_CONTENT);}//把请求提交或者委派给第二个Servletdispatcher.forward(req,resp);try{dbcon.close();}catch(Exception e){System.out.println(e.toString());}}else{resp.setContentType("text/html");PrintWriter out=resp.getWriter(); &#160;out.println("&lt;html&gt;&lt;body bgcolor=pink&gt;");out.println(" The account is invalid");out.println("&lt;br&gt;&lt;br&gt;");out.println("&lt;/body&gt;&lt;/html&gt;");resultToSecond="NA";out.close();}}catch(Exception e){System.out.println(e);} }}3)第二个Servelt代码:(作用是显示Account Number,并允许用户输入Cheque number和支票金额amount)import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.sql.*;///import javax.sql.*;//通过用getAttribute()函数得到帐号,显示用户账单号。

servlet简单学习笔记(Servlet简单学习笔记)

servlet简单学习笔记(Servlet简单学习笔记)

servlet简单学习笔记(Servlet简单学习笔记)Lessonl1.web projectOperation environment of web container ---------->web programWeb container: the most commonly used tomcat, GlassFish and Weblogic, WebSphere charges etc.2.install the Tomcat green version can be directly usedTomcat? must be the premise to install JDK72.1extract and understand the Tomcat directory resultsBin start stop commands in this directoryThe conf configuration information on TomcatLib directory Tomcat jar provided by JavaEE is only a standard platform provides the interfaceThe specific implementation is completed by the web container, of course also has its own jar containerWebapps this is the default project release directoryWhich contains a number of projects, these projects have provided us with learning, but also help2.2start and shut down TomcatA.environment variablesJAVA_HOMEPATH%JAVA_HOME%\binB.startBin/startup.bat double click to access from thehttp://localhost:8080 in the browser home page shows that Tomcat successfully installedC.offYou can double-click bin/shutdown, bat3.manual development of the first web projectA. 1 familiar with the web project directory structureThe directory structure releasedA.create a project directory structure4.construction project name such as AAA in webapps, create a AAA folderTo construct the WEB-INF directory under the b. aaa fileC. create a web. xml file in WEB-INFDirectly from the root project can leave the paste over, head andtailD.create a static index, html page file in the AAA directoryStart Tomcat E.In the address barHttp://localhost:8080/aaa/index, htmlHttp://ip address: port/ / project name page (project directory)5. 3 manual to write a Servlet program6.to write a class to inherit HttpServletRead from the doGet method, the output of a statementpilerJavaEE only provides the standard, did not provide the realization of its own to complete the containerFor the Tomcat jar on tomcat/lib/*. jarConfigure the classpath environment variable setclasspath=tomcat_home\lib\servlet-api. jar8.released to the Tomcat container.The use of AAA projectC. 1 first class copy to the WEB-INF classes directory (a classes directory 一 > package build)The C. 2 configuration file web. xml<servlet><servlet-name>helloServlet</servlet-name〉<servlet-class>HelloServlet</servlet-class></servlet><servlet-mapping>〈名称〉〈/ Servlet Servlet 文件名〉9.URL模式〉/文件/ URL模式〉〈10./ servlet 映射〉C 访问重启Tomcat servletHTTP: / / localhsot: 8080 /项目名Servlet 的URL 模式4o在Eclipse的Web项目中建立11.1创建一->选择动态Web项目界面中填写项目名称> servlet (起名字即可)目标运行时---->新的运行--->版本7—>选择tomcat home动态Web模块版本——> 2. 4即可点击完成——>项目创建成功以后再创建Tomcat Web项目就不用配置了B.2项目的结构(其它Eclipse比如MyEclipse可能结构稍有区别)12.3web项目建议使用UTF-8编码5o HTTP (无状态协议)请求发送-一>服务器给出响应后,这个时候你放大浏览器、缩小浏览器、关闭浏览器服务器都是不知道的。

Servlet笔记整理

Servlet笔记整理

Servlet笔记整理什么是servlet? 在Web服务器端加载并运⾏的Java应⽤程序具体运⾏在Servlet引擎管理的JVM上。

Servlet容器负责Servlet和⽤户的通信以及调⽤Servlet的⽅法。

Servlet和⽤户的通信采⽤请求/响应模式。

⽤于以动态响应客户机请求形式扩展Web服务器(Web Container)的功能。

Servlet是开发服务器端应⽤程序的⼀个很好选择, Servlet与JSP结合使⽤,能提供更强⼤的服务器端功能。

⼀个servlet就是Java编程语⾔中的⼀个类,它被⽤来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应⽤程序。

()Web服务器什么是Web服务器⽹络应⽤⼀般分为C/S和B/S两种C/S结构是Client/Server(客户机/服务器)的简称 , 桌⾯应⽤程序多采⽤这种结构 ,B/S结构是Browser/Server(浏览器/服务器)的简称 , 特点是客户端⽆需安装特定的软件 , 只需要安装浏览器即可与程序进⾏互动Web服务器是基于B/S结构 , 通过http协议进⾏数据交互(收发)http协议规定了发送数据的格式(报⽂格式)浏览器中发送和读取的格式都是固定的Web服务器需要能够接收和解析发来的符合http协议的请求报⽂ , 并调⽤对应的代码处理 , 再向浏览器发送符合http协议规范的响应报⽂请求报⽂格式 :请求报⽂实例 :GET /mytest HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0.......响应报⽂格式 :响应报⽂实例 :HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: length<? xml version = "1.0" encoding = "utf-8" ?>< soap12:Envelope xmlns:xsi = "/2001/XMLSchema-instance" xmlns:xsd = "/2001/XMLSchema" xmlns:soap12 = "/2003/05/soap-envelope" >< soap12:Body >< CancelOrderResponse xmlns = "https:///webservices2.3" >< CancelOrderResult >< Success >boolean</ Success >< ErrorDescription >string</ ErrorDescription >< ErrorNumber >int</ ErrorNumber >< CustomerOrderReference >long</ CustomerOrderReference >< OrderConfirmation >string</ OrderConfirmation >< CustomerDealRef >string</ CustomerDealRef ></ CancelOrderResult ></ CancelOrderResponse ></ soap12:Body ></ soap12:Envelope >浏览器与服务器的交互过程简单图解 :常见的名词解释Web应⽤ , http服务器 , Web应⽤服务器Web应⽤被称为Web Application , 通过浏览器访问的应⽤程序 , 从⽽为⽤户提供相关的服务 , 例如查询购物等 ; 也包含很多公司内部软件 , 如oa系统 , 医院内使⽤的系统http服务器 : 也称为Web服务器 , 主要功能是提供⽹上信息浏览服务 , 例如Apache Nginx是⽐较常⽤的http服务器 ; 使⽤浏览器访问Web站点或Web应⽤ , 则必须通过http服务器Web应⽤服务器 : Web应⽤服务器能够运⾏服务器上的应⽤程序 , 并将结果返回给客户端浏览器 , 例如tomcat就是⼀种Web应⽤服务器 , 通常情况下 , Web应⽤服务器兼具http服务器的部分功能注意 : Web应⽤需要http服务器及Web应⽤服务器 , 因为不仅需要浏览信息 , 还需要运⾏应⽤程序 ; 但是tomcat以兼具了http服务器的部分功能 , 所以运⾏web应⽤可以直接使⽤tomcat开发Web应⽤的语⾔java .net php等语⾔均可开发Web应⽤ ; Java开发Web应⽤最⼴泛 ; 官⽅在JavaEE中提供了Servlet JSP组件来开发Web应⽤TomcatTomcat介绍Tomcat⽬录结构⽬录⽤途/bin存放windows或linux平台上⽤于启动和停⽌Tomcat的脚本⽂件/conf存放Tomcat服务器的各种配置⽂件 , 其中最重要的就是server.xml/lib存放Tomcat服务器所需的各种JAR⽂件/logs存放Tomcat运⾏中产⽣的各种⽇志/temp存放Tomcat服务器在运⾏中产⽣的临时缓存/webapps存放Tomcat发布的Web应⽤/work Tomcat把由JSP⽣成的Servlet放于此⽬录下启动和停⽌tomcat服务器可通过apach解压⽬录中的startup.bat/shoutdown.bat来启动或停⽌tomcat在浏览器地址栏输⼊ : http://127.0.0.1端⼝号或http://localhost:端⼝号 , 页⾯进⼊到Tomcat启动成功页⾯Tomcat默认端⼝号为-8080可以在conf中的server.xml中修改tomcat端⼝号<Connector port="8080" protocol="HTTP/1.1 "connectionTimeout="20000" redirectPort="8443 "/>Tomcat在idea中的配置1. 在idea的setting中配置tomcat路径2. 创建项⽬或模块时 , 选择java enterprise(也叫javaEE企业应⽤) , 检查Tomcat服务器是否配置成功 , 并勾上webAppliciation⾃动创建web.xml⽂件(web项⽬核⼼⽂件 ,必须创建)写模块名3. 项⽬会⾃动配置完成 , 再设置项⽬跟路径(建议设置)完成以上配置可以直接启动服务器备注 : 由于idea中相关配置为⾃动配置 , 如果服务器启动异常 , 可以检查下图配置1. 读取web⽬录的路径web.xml⽂件路径是否正确2. 项⽬打包策略是否正确 , 便以⽂件路径是否正确(WEB-INF/classes)其他Web服务器Jetty : 更轻量级 , 更灵活 , 被⼀些框架继承 , 免费JBoss : JBoss⽀持JavaEE标准 , 能够作为JavaEE应⽤服务器使⽤ , servlet容器只是其中⼀部分 , 免费Weblogic : 市⾯上最好的J2EE⼯具之⼀ , 功能⼤⽽全 , 收费ServletServlet介绍servlet是JavaEE规范中的开发组建servlet运⾏在服务器端 , 需要servlet容器⽀持 , 例如tomcat(运⾏在tomcat中)可以通过浏览器访问servlet , servlet可以⽣成动态页⾯返回给服务器编写servletpublic class TestServlet extends HttpServlet {//继承httpservlet 重写doGet doPost⽅法protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理代码}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}Web.xml中配置<servlet><servlet-name> TestServlet </servlet-name><servlet-class>com.javasm.servlet. TestServlet </servlet-class></servlet><servlet-mapping><servlet-name> TestServlet </servlet-name><url-pattern>/TestServlet </url-pattern></servlet-mapping>配置中 :servlet-name相同作为同⼀组配置servlet-class配置完整包名类名url-pattern配置开⽅访问路径 , 该路径为虚拟路径配置时也可以使⽤注解进⾏配置@WebServlet("/配置访问路径")注意 : 配置⽂件和⽤注释配置作⽤相同 , 只选⽤⼀种⽅式 , 不建议两种同时使⽤Servlet实现⽅法实现servlet的三种⽅式 : ⼀个实现 , 两个继承1. 实现servlet接⼝2. 继承GenericServlet抽象类 , 重写service()⽅法3. 继承HttpServlet抽象类(Httpservlet继承于GenericServlet) , 重写doGet() doPost()⽅法Servlet⽣命周期Servlet其他配置参数servlet中配置初始化参数 , 可以在servlet中直接读取配置中:<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.javasm.servlet.HelloServlet</servlet-class><init-param><param-name>testParam</param-name><param-value>Hello Servlet</param-value></init-param></servlet>代码中:String initParam = getInitParameter("testParam");配置servlet其中顺序 : load-on-startup<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.javasm.servlet.HelloServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>注意 : 如果配置了loat-on-startup , servlet实例会在项⽬启动时加载 , 并按照load-on-stratup中配置的顺序加载 , 如果不加load-on-startup , 实例会在有请求访问到该servlet时实例化Servlet中处理乱码Servlet运⾏在Web服务器(tomcat)中 , tomcat默认对传递的数据使⽤ios-8859-1进⾏编码 , 传递中⽂⽆法正常显⽰乱码分为两种情况 :请求乱码 :如果数据在传递时是正常中⽂ , 但是在servlet中取出是乱码 , 需要在请求对象中设置编码格式 , 对请求数据进⾏重新编码request.setCharacterEncoding("UTF-8");响应乱码 :如果数据在servlet中是正常中⽂ , 到页⾯中显⽰乱码 , 则需要在响应对象中设置相应头 , 让页⾯指定以何种编码格式解析相应数据response.setContentType("text/html;charset=UTF-8");实例代码:package com.javasm.controller;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 MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubsuper.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//请求乱码 req.setCharacterEncoding("utf-8");//响应乱码 resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");String uname = req.getParameter("uname");System.out.println(uname);resp.setContentType("text/html;charset=utf-8");PrintWriter pw = resp.getWriter();pw.print("hello! <h1>"+uname+"</h1>");pw.flush();pw.close();}}Servlet跳转页⾯的重定向和转发重定向重定向过程简单解释 :浏览器发送请求给服务器 , 服务器⽆法处理浏览器发送的请求 , 转⽽让浏览器找其他服务器去完成请求 , 此过程⼀直进⾏ , 直到任务完成特点 :1. 重定向是客户端⾏为(浏览器重新请求)2. 重定向是浏览器做了⾄少两次访问请求(有可能重定向多次)3. 重定量使浏览器地址改变4. 重定向两次跳转之间传输的信息会丢失5. 重定向可以指向任何的资源 , 包括当前应⽤程序中的其他资源 , 同⼀个站点上的其他应⽤程序资源 , 其他站点的资源(如⾃⼰⼯程重定向到百度)注意 :传递给HttpServletResponse.sendRedirect⽅法的响应URL以"/"开头 , 它是相对于整个web站点的根⽬录重定向代码实现转发原理 :转发过程简单解释 :浏览器请求服务器 , 服务器⽆法完成浏览器请求 , 将请求直接交给其他服务器⽽不是再响应给浏览器 , 再服务器转发的过程中携带浏览器给服务器的数据特点 :1. 转发是服务器⾏为(不经过浏览器)2. 转发过程中浏览器只做了⼀次响应3. 转发过程中浏览器地址不变4. 转发过程中服务器之间的信息传⼊信息不会丢失 , 可以通过request传递数据5. 转发只能将请求转发给同⼀个Web应⽤的组件注意 : 如果创建RequestDispatcher对象时指定的相对URL以"/"开头 , 它是相对于当前Web应⽤程序的根⽬录(只能是本⼯程下 , 因为是服务器⾏为)转发代码实现总结 :重定向和转发都是⽤来在servlet中跳转页⾯ , 但是有很⼤区别 , 重定向是浏览器的⾏为 , 转发是服务器的⾏为 , 所以重定向加⼤了带宽 , 转发加⼤服务器压⼒ , 对于参数传递也需要注意 , 重定向会使参数消失 , ⽽转发数据仍然存在 , 对于跳转的页⾯ , 重定向可以跳转⾄其他项⽬或⽹站 , 转发只能在⾃⼰⼯程下跳转路径相关注意 :绝对路径⼀般⽤在跳转其他⽹站 , 相对路径尽量避免使⽤ , 根路径则⼤多数情况都试⽤Servlet线程特性当多个客户端同时请求访问⼀个servlet , web服务器如何处理多个请求?多⽤户访问时 , servlet会针对每个请求开启新线程来处理数据收发 , 因为对每个请求的处理是固定的 , ⼀次请求收发就结束第⼀次访问servlet时 , 服务器将创建⼀个该servlet类的对象 , 并调⽤doXXX()⽅法⽣成响应 ; 多个客户端访问同⼀个servlet时 , 不再创建新的对象 , ⽽是共同⽤⼀个servlet对象 ,可以说 , servlet是多线程单实例的注意 : 多线程访问单实例的情况下 , 会不会产⽣线程安全问题 ?每个线程间 , 栈是独⽴的 , 运⾏⽅法时 , 会压⼊栈帧 , 所以运⾏⽅法时线程不会相互影响 , 因为单实例 , 所以如果servlet中有成员变量 , 那么所有县城都会放问道同⼀个实例的成员变量 , 会造成线程安全问题所以使⽤servlet时 , 尽量不要建⽴成员变量Servlet域对象域对象 , 是指服务器交互过程中可以⽤来存储数据的空间 , 相互独⽴ , ⽣效的时机不同 , 都可以⽤来存储信息Servlet三⼤域对象的应⽤request⼀个⽤户可以有多个每次请求都会产⽣⼀个请求结束对象消失建议⽤于页⾯间值传递Seesion⼀个⽤户⼀个每个浏览器都会产⽣⼀个会话过期或者关闭浏览器对象消失建议存放⼀些⽤户信息 , 不要把过多的信息存放在session⾥ServletContext(appliciation)全局只有⼀个是⼀个全局的存储信息空间 , 服务器开始就存在 , 服务器关闭才释放为了节省空间 , 提⾼效率 , 只存放少量重要的信息域对象统⼀⽅法 :返回值类型⽅法名⽅法作⽤void setAttribute(String key , Object value)以key/value的形式保存对象值Object getAttribute(String key)通过key获取对象值Servlet中常⽤类和⽅法ServletContext接⼝⽅法说明public void setAttribute (String name , Object object)绑定⼀个java对象和⼀个属性名 , 并存放到ServletContext中 , 参数name指定属性名 , 参数Object表⽰共享数据public Object getAttribute (String name)根据参数给定的属性名 , 返回⼀个Object类型对象public String getContextPath()返回当前web应⽤的URL⼊⼝public String getIntiParameter(String name)返回Web应⽤范围内匹配的初始化参数值 , 在web.xml中元素中元素表⽰应⽤范围内初始化的参数ServletConfig接⼝⽅法说明public string getInitParameter(String path)获取web.xml中指定Servlet的初始化参数值public ServletContext getServletContext()回去ServletContext实例public String getServletName()回去当前Servlet的名称HttpRequest(很常⽤)⽅法说明public String getParameter(String name)获取页⾯提交制定名称的参数值public string[] getParameterValues(String name)获取页⾯提交相同该名称参数的数组值public void setCharacterEncoding("UTF-8")设置请求字符编码格式public Map getParameterMap()返回⼀个保存了请求的所有参数和值的map对象public Object getAttribute(String name)返回⼀个请求中属性名为name的属性值public void setAttribute(String name , Object obj)向request范围内设置属性 , 参数name为属性名 , obj为属性值public String getContextPath()返回当前Web项⽬的跟路径Request对象中封装了很多跟http路径相关的⽅法request.getContextPath(); 项⽬名(/WebDemo)request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath+"/"结果为 : http://localhost:8080/WebDemo/request.getRemoteAddr() 客户端IP地址request.getServletPath() 请求的servlet的地址/studentrequest.getRealPaht("/") 在tomcat中的路径request.getRequestURL(); 获取请求路径/web_demo/studentHttpResponces⽅法说明public PrintWriter getWriter()获取响应的打印输出流对象public void setContexttype("text/html;charset=UTF-8")设置响应内容的类型和字符编码格式response对象中主要封装跟输出信息相关的⽅法HttpSession⽅法说明setAttribute(String key , Object value)以key/value的形式保存对象值getAttribute(String key)通过key获取对象值setMaxInactiveInterval()设置session的有效⾮活动事件 , 以秒为单位getId()获取session对象的编号invalidate()设置session对象失效session使⽤ :HttpSession session = request.getSession()从request中获取会话(session)对象 , 每个浏览器都会产⽣单独的session对象session作为会话对象 , 经常⽤来保存⽤户相关的登陆信息 , ⽅便服务器调⽤(⽤户本⾝信息 , 权限信息等)案例 :⽤户登录 , 通过session做是否已登录的访问控制登陆时将⽤户对象放在session中 , 访问其他服务时先判断⽤户是否登陆 , 有则进⾏服务 , 没有提⽰未登陆 ,session登陆案例。

servlet总结(word版)

servlet总结(word版)

1、javaweb学什么呢?用java语言开发动态的web资源。

对于java程序员而言,所谓动态的web资源就是可以运行在服务器上的java程序。

2、实现服务器管理java程序对于我们开发人员开发出的java类,这个类中到底有哪些方法,对于tomcat服务器是不可能知道的。

tomcat服务器需要执行我们编写的java类,就需要知道我们编写的java类有哪些方法,然后在适当的时间调用这些方法,所以开发人员编写的java程序要想运行在服务器上,就必须实现一个特殊的接口Servlet.javainterface Servlet{public void init();public void service(ServletRequest request,ServletResponse response);public void destroy();ServletConfig getServletConfig();String getServletInfo();}通常情况下,称继承了HttpServlet的程序成为servlet程序Servlet接口中定义了所有的servlet必须实现的方法。

一个servlet是一个运行在web服务器上的java程序。

servlet通常是通过HTTP协议接收和响应web客户端浏览器的请求的。

对于开发人员,编写一个servlet有三种途径:1、定义一个类实现Servlet接口.2、定义一个类继承GenericServlet。

GenericServlet类是一个抽象类,该类实现了Servlet接口和ServletConfig接口。

这个类中只有一个抽象方法public abstract void service(ServletRequest req,ServletResponse res);GenericServlet类的子类中实现service()方法即可。

3、定义一个类继承HttpServlet类。

韩顺平jsp笔记(个人总结版)

韩顺平jsp笔记(个人总结版)

第一、二、三课
jsp入门
jsp原理
jsp声明<%! %> 在这里面声明的变量是全局变量<% %>在这里面声明的变量是局部变量
注释:
<%-- -- % > <%// % > <%/* */ % > 表达式:
<%= %>
九大内置对象
jsp 语法
1.指令元素(编译指令)
①page指令
pl:<%@page language="java"import="java.util.*"pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
常用的属相有import,contentType,errorPage,isErrorPage
②include 指令
<%@include file="路径"%>
Ps:路径是相对路径。

由于该方法引来的页面会和当前页编写成一个serlet文件,所以被引页和当前页的页面编码得相同。

③taglib指令
(略)
2.脚本元素
<%=java表达式%>
<% java代码//int i = 10 局部变量%>
<%! int j = 20 // 全局变量%>
3.动作元素(运行指令)
ps:<jsp:include page=”” /> 上面的错了。

Servlet学习笔记

Servlet学习笔记

Servlet前言1、学习任务:day1:了解servlet,明确web应用程序的基本框架,熟悉web服务器的基本结构以及使用方式。

除此之外,手工能书写一个简单的servlet,并且部署运行。

day2:明确form表单配合servlet的使用,并且实现具有一定业务逻辑的web应用。

day3:servlet的生命周期,以及一些高级方法。

day4:servlet结合数据库的使用(JNDI)。

day5:综合处理复杂业务。

2、软件开发的模式(架构):C/S(Client/Server):客户端会分担服务器的一些业务处理,降低服务器的压力,提高应用效率。

--> ex: qq缺点:1)升级维护比较麻烦;2)资源要求,尤其是局域网使用比较高;B/S:现阶段应用开发的主流架构,客户只需要打开浏览器,就可以进行所有操作。

优点:1)使用的资源相对较少;2)升级维护非常方便(无缝升级);开发技术:1)静态网页技术:html,js,css2)动态网页技术:CGI,ASP,,Servlet,jsp,php等等3、Servlet:开发使用B/S架构。

http://192.168.4.53:8080/myServlet/register.html?a=bURL:协议://ipAddress:port/web应用/具体的请求路径1)协议:servlet里面使用的主要是http协议;2)port:webServer的端口号;3)webServer:可以部署web应用的软件,同时可以接收客户端的请求(request),并且在服务器端做完处理,返回给客户端(response);ex: 开源的:tomcat(Apache-->美国的软件基金会),Jboss商用的:weblogic(BEA),webSphere(IBM)微软:IIS4)web应用的名称(也叫ContextPath,上下文路径):myServlet --> java工程name;request.getContextPath(); ---> /myServlet5)具体的请求(资源名称):/register.html;request.getServletPath(); ---> /register.htmlrequest.getQueryString(); ---> a=b4、什么是Servlet?1)sun公司提供的JavaEE规范,主要用于开发web应用;2)简单的说:servlet就是一个使用了一定协议以及Api的java程序;专业的说:servlet是一套开发web应用的规范,其内部实现全部由java语言实现,具有java语言的一切优点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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提交方法即可。

相关文档
最新文档