servlet总结
Servlet
C/S--->Client/Server(客户机/服务器) 优点:
1)运行效率较高
2)交互性强适合局域网, 缺点:升级维护困难
B/S-->Browser/Server(浏览器/服务器)
优点:无需关心客户端,升级维护,只需操作服务器即可.比较方便. 缺点:
1)交互性是请求/响应式,需要通过网络进行交互,效率相对c/s架构的软件来说较低. 2)要开发交互性较强的界面比较困难. CGI:最早开发b/s架构的一门技术 从CGI分出 1)微软的ASP--->ASP.NET 2)JAVA的Servlet--->jsp 开发技术: 静态网页技术: HTML,JS,CSS
动态网页技术:(动态说的是数据动态) CGI,ASP,ASP.net,servlet,php,jsp等 url:
http://192.168.1.250:8888/poll/login.jsp
协议://地址(ip-->域名):端口(如果是80,可以省略)/web应用名/资源名 web服务器: (微软的)IIS: (apache的)tomcat(开源的):等.. servlet:
1)属于j2ee的其中一个技术,是一个规范
2)servlet是一个web组件(包含servlet类和他的描述信息) 组件如java bean 可复用的
3)servlet运行的时候就是一个java对象(创建.调用.管理由web服务器(web容器)完成).web容器是web服务器的线程 tomcat的web容器是CATALINA web 容器调用servlet对象的方法 首先由web容器创建两个对象:
1.HttpServletRequest:
包含了客户端提交的所以信息,在servlet中 ,可以通过这个对象获得客户端传递过来的数据. 2.HttpServletResponse:
通过这个对象可以向客户端返回数据
public void service(ServletRequest req,ServletResponse res){ }
web应用的目录结构:
应用名:(web应用的根目录的名字) WEB-INF(必须):浏览器不能直接访问 classes(存放.class文件) lib(存放第三方的.jar文件)
web.xml(描述servlet,包括类名和访问标识) html/first.html js/my.js css/my.css jsp/first.jsp META-INF
tomcat服务器的目录结构:
bin:存放一些可执行文件:比如startup.sh,shutdown.sh
common:存放tomcat服务器和所以web应用都可以使用的类和jar包 conf:存放tomcat服务器使用的一些配置文件.比如 service.xml中可改端口号 logs:存放tomcat服务器和web应用输出的日志信息的文件
server:存放一些只能由tomcat服务器使用的类和jar包,以及tomcat自带的web应用 shared:存放一些只能由web应用使用的类和jar包 temp:存放一些临时文件 *webapps:用来部署web应用
work:存放jsp文件被翻译和编译以后的.java和.class文件. web工程(IDE):通过工程可创建web应用
web应用:(成品软件) javax.servlet.Servlet(接口)
javax.servlet.GenericServlet(抽象类)
javax.servlet.http.HttpServlet(抽象类)(建议使用)
Service-->doGet/doPost(根据客户端请求方式调用,不是非要同时调用)
tomcat由于已经启动无法启动 用命令 ps -ef|grep tomcat 在kill -9 进程号 form表单处理: 1.提供表单
a)提供一个html页面包含一个form表单
b)提供一个servlet返回一个form表单 form表单action属性指定的路径 a)相对路径 register b)绝对路径
/servlet/form/register 2.中文乱码问题 a)get方式提交
解决办法,在服务器中设置客户端提交请求的URI的编码类型 在server.xml中 在server中获得客户端提交的参数之前,调用req对象的setCharacterEncoding方法设定编码类型。 c)响应 在server中获得输出流之前,调用response对象的的setCharacterEncoding方法设定编码类型。 3.method=\和method=\表单的两种提交方式比较) get请求: a)直接在浏览器地址栏输入请求的URL发起的请求: b)点击一个超连接发起的请求 c)提交一个form表单但form表单的method不指定或指定get的时候 特点: 提交的数据放在请求的头部,一般在查询数据的时候我们会选择get方法发起请求 post请求: a)提交一个method属性指定为post的表单发起的请求. 特点: 提交的数据放在请求体部,在向客户端提交数据的时候我们会选择使用post方式发起请求. 4.request/response对象中的方法 request.getContextPath();返回web的应用的根路径 request.getMethod();返回请求方式,get或post request.getParameterMap();获得客户端提交的所有参数,包括参数名字和值 request.getParameterNames();获得客户端参数名字 request.getQueryString();返回URI后面所跟着的参数 如果是post方式提交返回null request.setCharacterEncoding(\设定客户端提交的内容的编码类型 5.servlet的url-pattern的写法(补充) a)以\开始,后面跟着具体的内容 b)前通配(*) :如 *.do,*.action c)后通配 如: /form/*,/basic/* Servlet的生命周期(四个阶段) 1)装载和实例化阶段 创建者:web容器 创建情况: (1)第一次访问的时候创建 当num >=0时,servlet在web应用被安装的时候创建 创建顺序: num=0,最晚被创建 num>0,值越小越早被创建 2)初始化阶段 调用者:web容器 public void init(ServletConfig config){} 在GenericServlet中已经对有参的init方法作了实现 public abstract class GenericServlet implement Servlet{ private ServletConfig config; public void init(ServletConfig config){ this.config=config; this.init(); } public void init(){