JAVA Sevlet 是一种使用JAVA编写的CGI程序
CGI:通用网关接口
与传统CGI不同的是,servlet是使用一种多线程的程序处理方式--性能较高
在servlet中可以控制输出HTML代码,则所有的HTML都必须使用out.println()一行行输出
简单servlet
【1】直接继承自HttpServlet
【2】在doPost(doGet)方法中写入相应的程序代码
【3】配置web.xml文件
servlet本身也是一个java类,也要放在WEB-INF的classes中
HttpServlet属于javax.servlet.http包下面
ServletException属于javax.servlet包下面
HttpServletResponse,HttpServletRequest都在javax.servlet.http包下
输出对象out:PrintWriter out=response.getWrite()
out.println("html标签")
out.close();
JSP程序的功能与Servlet一致,也就是意味着Servlet程序同样可以被外部桥访问,就必须有一个地址,只能通过WEB映射解决
修改web.xml,可以解决该问题
<servlet>
//在web.xml文件内部起作用的名字
<servlet-name>LoginServlet</servlet-name>
//servlet所在的包类名称
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
//在web.xml文件内部起作用的名字,此名字与上面的一致
<servlet-name>LoginServlet</servlet-name>
//具体的映射路径,前面必须有一个/
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
只要是web.xml修改,必须重新启动服务器
JDK提供的是JAVA SE的包,而JAVA EE包不在JAVA SE之中,需要单独配置包
回顾,*.jsp->*.java(Servlet)->*.class
结论:在Tomcat中,存在servlet的所有库文件
在编译Servlet时,有时会出现找不到servlet包的问题,这是因为servlet为jdk的扩展包,素以在使用时需要指定classpath,具体方法:
【1】-set classpath=%Tomcat%\common\lib\servlet.jar
【2】如果不指定classpath,可以使用如下方法:
将servlet.jar文件拷贝到JDK安装路径下的jre\lib\ext\下
GET请求:表单和地址输入都为GET请求
POST请求:只有表单输入
Servlet生命周期:
1、初始化
默认情况下,在第一次使用Servlet程序时初始化
也可以在容器启动时初始化Servlet程序,需要进行配置:在web.xml中<servlet>标签内添加<load-on-startup>1</load-on-startup>*1为优先级*
2、服务(doGet,doPost),直接输入地址就是一个get请求
3、销毁
【1】服务器关闭
【2】此Servlet长时间不使用
对于一个基本的Servlet程序必须注意一下几点:
【1】符合Servlet程序的开发结构
【2】配置web.xml的问题
发现Servlet的问题:不适合大量输出html
关于Servlet初始化方法有两种
【1】init() 当不需要传递初始化参数时使用
【2】init(ServletConfig config),如果有此初始化方法,则上面的无参数初始化方法无效 当需要传递初始化参数时候使用此操作
开发中的一个问题:关于路径的问题(MVC模式)
JSP讲解的config对象是一样的,在web.xml文件中配置初始化参数
可以通过配置初始化参数,设置数据库的额链接地址,驱动程序等,但是一般此操作很少使用
动态WEB的主要功能,必须具有交互性--表单上,通过表单进行交互
在Servlet中的HttpServletResponse和HttpServletRequest
注意:表单如果提交方式为post,必须使用doPost
在Servlet中解决路径的原则就是在地址栏中拼凑出完整路径
Servlet接口和JSP内置对象的比较:
HttpServletRequest request
HttpServletResponse response
ServletConfig config
HttpSession session
ServletContext application【application的取得有两种方式(对应两种初始化方法):1、无参数初始化方法/不写,直接取得,2、如果针对有参构造(init(SerlvetContext)必须通过config对象取得】