服务器
概念:一台强大的计算机,程序代码的执行环境,所有编写的java代码都会上传到服务器中执行
服务器软件有许多,使用tomcat软件(绿色免费,java代码编写,apache组织)
注意:tomcat中自带javaEE环境,如果别的软件没有带javaEE环境就要自己配置
在apache官网下载,版本7.0以上,环境配置:
环境变量中设置变量:%JAVA_HOME% ,值为安装java的路径,然后放在系统路径里就行
idea导入tomcat
看图操作:
①在run选项中,点击修改配置
②点击+号,增加新的配置
③找到并添加tomcat服务器,找不见最下边会有一个更多选项
④设置路径,取到目录就行
⑤点击ok就行
创建javaEE工程
创建一个新的模块,点击javaEE模块,勾选Web
编写servlet程序
可以手动编写,可以idea自动生成
手动编写
手动编写的类名最后加servlet最好,如:HelloWorldServlet
这个类继承HttpServlet类
HttpServlet类,只在javaEE环境中有,不在jdk中
public class HelloWorldServlet extends HttpServlet{
}
重写HttpServlet类中,doGet()和doPost()方法
doGet()方法处理页面发送到服务器的请求
doPost()方法处理表单中的请求
public class HelloWorldServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
配置编写好的servlet类,通过web.xml文件或者注释
通过web.xml文件:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>cn.powernode.servlet.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
URL:统一资源定位符(绝对路径)
URI:统一资源符(相对路径)
对web工程的servlet进行调整:
浏览器的默认端口是80,服务器的默认端口是8080
关于servlet类的一些特性
1.servlet类是单例模式的类
2.servlet类实例化的时间,默认情况下一个servlet是在第一次访问时会实例化,后续访问的时间和第一次访问的时间会有差距,因此要设置在服务器启动时就实例化类:在xml文件中添加标签<load-on-startup> </load-on-startup>
3.一个servlet可以对象多个servlet-mapping
Servlet类
Servlet接口
servlet类的生命周期
初始阶段:
void init(ServletConfig config)
默认情况下一个servlet是在第一次访问时会实例化,可以使服务器开启时就实例化
这个方法会自动执行,作为一个标记使用
处理请求阶段:
void service(ServletRequest req, ServletResponse res)
浏览器发出一个请求,Servlet类只有service方法会自动执行,doGet()/doPost不会执行,不重写service()方法,系统默认的service()会调用doGet()/doPost方法
注意:如果没有提到本质(Servlet类生命周期),我们可以说服务器接受到请求,doGet()和doPost()会自动执行
销毁对象:
void destroy()
服务器关闭时才会调用这个销毁对象
ServletConfig接口
初始化参数:servlet类实例化时直接拥有的一些键值对数据,通过配置文件实现
String getInitParameter(java.lang.String name)
返回的是servlet类里的属性的键对应的值,输入键,返回值
Enumeration getInitParameterNames()
返回servlet类里的所有键,以枚举的形式
getServletContext() 返回一个servlet正在内中执行的 ServletContext 的参考
GenericServlet类
重写了Servlet接口和ServletConfig接口的方法,供子类调用
HttpServlet类
这个类的一些方法只需要记住名字和含义,默认内容不需要记住,因为都是需要程序员重写的
注解方式配置servlet类
注解名称:@WebServlet
@WebServlet(name="",urlPatterns="/",loadOnStartup=1,initParams="")
name是Servlet类的标记一个名称,urlPatterns是一个请求名称,loadOnStartup初始化时间
最简单的配置
@WebServlet("/") ,只有一个请求名称