动态页面介绍
html是静态页面,它不能满足需求。动态页面,我们可以输入数据,和页面交互(付款,购物,注册等)
不同的时刻打开页面,呈现的内容不一样。
Tomcat目录层次结构
- bin 存放启动和关闭Tomcat的脚本文件
- conf 存放Tomcat服务器的各种配置文件
- lib 存放Tomcat服务器支撑的jar包
- logs 存放Tomcat的日志文件
- temp 存放Tomcat运行时产生的临时文件
- webapps web应用所在目录
- work Tomcat工作目录
servlet介绍
servlet技术的重要性不言而喻,jsp也是在servlet上发展起来的。
servlet(java服务器小程序)特点:
- 由服务器调用和执行
- 用java编写
- 有一套自己的servlet规范
- 几乎可以完成所有网站的功能
- 是jsp的基础
Tomcat是web服务器的同时,也是servlet和jsp的容器
开发servlet三种方式
- 实现servlet接口
- 继承genericservlet
- 继承httpservlet
实现servlet接口
我自己在eclipse中创建一个web项目
在java resources下建了一个包,并创建一个servlet文件
引入所需的包,继承servlet接口,并重写接口的五个方法。
五个方法介绍:
package cn.lyy;
import java.io.IOException;
import javax.servlet.*;
public class frist1 implements Servlet
{
@Override
//5.销毁servlet,从内存中清除
public void destroy() {
// TODO Auto-generated method stub
}
@Override
//2.得到servletConfig对象
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
//4.得到servlet的配置信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
//1.初始化servlet,把servlet装载到内存中,只会调用一次
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
@Override
//3.该函数是服务函数,我们的业务逻辑代码
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("hello world");
arg1.getWriter().println("hello world"+new java.util.Date());
}
}
编写web.xml文件
根据servlet规范,需要将servlet部署到web.xml文件(这个很重要)
<servlet-name>
给servlet取个漂亮的名字,该名字可以自己定义,不过最好用该servlet的名字
<servlet-class>
要指明该servlet放在哪个包下的和servlet的名字,不要带.java
<servlet-mapping>
是servlet的映射。
然后又是一个<servlet-name>
,这个名字要和第一个<servlet-name>
一致.
<url-pattern>
这个就是将来访问servlet的资源名,可以随意,但最好是servlet的名字,记得带/
<servlet>
<servlet-name>frist1</servlet-name>
<servlet-class>cn.lyy.frist1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>frist1</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
测试完成
继承HttpServlet开发Servlet(最常用)
编写servlet文件,需要重写doget和dopost方法
package cm.lyy;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class frist2 extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.getWriter().println("hello world");
}
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.getWriter().println("world hello");
}
}
部署到web.xml文件
最后发现在客户端显示hello world,所以默认用get方法
我们post方法实现一次
简单写一个表单,action指向servlet的<url-pattern>
,不用加/
<body>
<form action ="abb" method="post">
账号:<input type="text "name="username">
<input type="submit" vaule="登录">
</form>
</body>
提交表单,我们会发现
get提交和post区别
- post提交比get要安全,get会把提交的内容显示在地址栏
- post提交的内容要比get提交大的多
- 但是get响应速度比post快