java web 学习笔记 - servlet01

---恢复内容开始---

1.Servlet介绍

   Servlet 是用java语言编写的服务器端小程序,属于一个CGI程序,但与传统的CGI不同的是,它是多线程实现的,并且可以多平台移植。

   用户自定义的Servlet类一般都需要继承自 HttpServlet类。

 2. Servlet的基本处理流程

   

3.用Servlet实现第一个hello world

  a. HelloServlet.java还是放在WEB-INF下的classes中

  b.HelloSevlet 类一定要继承自 HttpServlet,通过servlet.http查找dov文档,可以看到执行的doget方法。

  c .通过doget方法中的response参数,获取到PrintWriter对象,即可调用println()函数打打印超文本内容。

  helloworld代码如下

  
package cn.liys.servletdemo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{

PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>");
out.println("helloworld");
out.println("</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Hello World");
out.println("</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}

   

  d.需要注意的是,编译该类时,需要用到开发包servlet-api.jar ,是从tomcat/lib目录下获取到的。

     一个是需要配置classpath内容,另外需要将该jar包拷贝到 jre/lib/ext下

     最后一个,在win7下最好以管理员身份运行cmd,这样javac编译才会成功。

 

  e. 需要在web.xml中配置该servlet的映射。

      //定义servlet

       <servlet>

    <servlet-name>hello</servlet-name>

              <servlet-class>cn.liys.servletdemo.HelloServlet</servlet-class>

       </servlet> 

      //定义路径映射,可以定义多个映射servlet-maping

      <servlet-mapping>

    <servlet-name>hello</servlet-name>

     <url-pattern>/hello.asp</url-pattern>

      </servlet-mapping>

       ...

               <url-pattern>/hello.liys</url-pattern>

       ...

 

4.用servlet接收表单提交内容

  a. 在servlet中需要实现doGet() doPost()方法,可以从java doc中查询怎么用。

      根据定位到 javax.servlet.http包中的HttpServlet类,然后去查doGet ,doPost方法的使用。

      打印的话需要查参数中的response的getWriter();

   代码如下:

package cn.liys.servletdemo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class InputServlet extends HttpServlet{

protected void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
String info = req.getParameter("info");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>");
out.println("helloworld");
out.println("</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>"+info);
out.println("</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}

protected void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
this.doGet(req,resp);

}

   b.需要注意的是在web.xml中的映射要将将路径定位到表单所在的目录下,以方便表单在action中直接servlet-name,不需要../等

web.xml配置片段如下:

<servlet>
<servlet-name>input</servlet-name>
<servlet-class>cn.liys.servletdemo.InputServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>input</servlet-name>
<url-pattern>/InputServlet/input</url-pattern>
</servlet-mapping>

 

表单内容如下:

<html>
<head>
<title>
Servlet 的doget dopost
</title>
</head>
<body>

<form action="input" method="post">

内容: <input type="text" name="info">
<input type="submit" value ="提交">

</form>

</body>

</html>

 

5.servlet生命周期

  

    一般servlet在第一次调用时,启动初始化操作init();

    如果想在tomcat启动时调用需要在web.xml中的servlet段加入<load-on-startup>1<load-on-startup>

    destory()方法一般在 web容器结束时,或者是长时间不调用servlet时,或者是reload时调用。

 

6.取得初始化配置参数

  通过带config参数的init来取得

  。。。

  private String database = null;

public void init(ServletConfig config)throws ServletException{
  database = config.getInitParameter("database");
}

。。。。

在Web.xml中这么配置
<servlet>
...
<init-param>
  <param-name>database<param-name>
<param-value>oil<param-value>
</init-param>
</servlet>


7.取得session ,application内置对象

a.通过doGet(request,response)中的request可以取得session对象。

request.getSession()
通过取得session对象可以对登陆信息进行验证。

b.通过super.getServletContext()取得application对象
该函数是在HttpServlet的父类GeneralServlet类中定义。

通过此操作可以取的运行环境的真实目录, app.getRealPath();

 

 

  

 

 

 

 

 

 

    

   

 

转载于:https://www.cnblogs.com/lysforwin/p/7603232.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值