自己最后又变懒了,好多天只是看着书看着网上的视频学习,没有也不想回忆学过的知识,只是知道自己还在进行着学习,其实回忆学过的知识也是比较受罪的,所以不想总结的自己就是变懒了很多。
现在又到了晒就业是季节,一位学长晒出了阿里的offer,羡煞旁人,这也激励着自己,就算不能找到那种好工作,现在也不能无所事事的这样玩着。所以开始回忆,开始技术~~·
最近一直在学习Servlet。首先就要说到为何要用到Servlet,让你开发一个网页,一个人可以发帖,其他人可以回复。这样的交互功能用普通的Java技术就完成不了啦。想想这需要用到什么技术呢?sun公司提供Serverlet技术提供使用。serverlet接受请求,业务逻辑,回复请求。这个是很多高级技术(JSP)的基础。
Serverlet(别名就是Java服务器小程序)的特点有一下几方面:
1.它是由服务器端(tomcat)调用和执行的。
2.它是用Java语言编写的(类)。
3.它是按照Server规范开发的。(这个很重要的)
4.功能强大,可以完成几乎所有的网站功能。
5.是学习jsp的基础。
想要实现Serverlet的编程就得知道其开发方式,它主要有三种开发方式:
(1)实现Servlet接口
(2)继承GenericServet
(3)继承HttpServlet
我在这里就只说第一种开发方式,这种方式比较繁琐,但可以更好的理解Servlet的编程步骤。在这里举一个小案例。这个案例的需求是:使用实现接口的方式,来开发一个Serlet,要求该Serlet可以显示一个Hello World,和当前时间。要显示当前时间这个用普通的Java或者静态网页是编写不出来的。所以就得用到Servlet技术。
编写这么一个小程序的步骤是:
1)建立一个web应用(在那个webapps下面linweieranSerlet,
2)要建立WEB-INF里面要有web.xml(可以从root下面复制),还要有classes,lib文件夹
3)既然是实现接口,那么就需要将他的方法全部都实现。
4)要将servlet的包写入classpath中,这个包可以在tomcat/lib下面找到。
5)如果使用javac编译一个Java文件,使用命令javac -d . 打包编译。
6)根据servlet 规范,还需要在web.xml中部署Servlet
其实现接口方式代码为:
package com.linweieran;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyFirstSerlet implements Servlet
{
//该函数用于初始化Servlet 就是把该Servlet装载到内存中
//该函数只会被调用一次
public void init(ServletConfig config)
throws ServletException{
}
//得到ServletConfig对象
public ServletConfig getServletConfig(){
return null;
}
//该函数是服务函数,我们的业务逻辑代码就是写在这里的。
//该函数每次都会被调用
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,java.io.IOException{
//在控制台中输出
System.out.println("hello world "+new java.util.Date());
res.getWriter().println("hello,world "+new java.util.Date().toLocaleString());
}
//该函数是得到servlet配置信息
public java.lang.String getServletInfo(){
return null;
}
//销毁该Servlet,从内存中清除掉,只会被调用一次
public void destroy(){
}
}
然后进行编译,得到其class文件。
我在进行javac编译的时候出现的以上错误。原因是我使用editplus写的,保存格式是UTF-8,我的处理办法是另存为->编码选择ANSI,在进行编译则成功。
其中,WEB-INF文件下的web.xml文件需要配置Servlet的路径。简单的配置过程是:
<servlet>
<!--servlet-name 就是取个名字,该名字可以自己定义,
默认使用该Servlet名字-->
<servlet-name>MyFirstSerlet</servlet-name>
<!--servlet-class指明该class放在哪个包下面,形式如下:包.../类-->
<servlet-class>com.lijingbo.MyFirstSerlet</servlet-class>
</servlet>
<!--Servlet的映射-->
<servlet-mapping>
<!--这里的Servlet-name需要和前面的一样-->
<servlet-name>MyFirstSerlet</servlet-name>
<!--这里是访问Servlet资源位置,默认命名规范:
就是该Servlet的名字-->
<url-pattern>/MyFirstSerlet</url-pattern>
</servlet-mapping>
其中Servlet-name 是自己起的名字。Servlet-mapping是这个应用的映射。
其中有些小注意点,我已开始用的是tomcat的安装版,这个tomcat直接安装不用在电脑里配置环境变量,一开始偷懒就一直用到现在,但是在写这个程序的时候发现,安装版的tomcat每次点击打开及时挂载的应用配置有错,也不会报错,这个对于开发时候的调试很不方便。所以我就下载免安装版的每次点击startup.bat进行启动,在黑窗口里可以看到某个应用的具体错误。所以建议编程时候使用免安装版的tomcat。
就这个小程序,弄了我两天终于可以征程运行。下面是运行截图。