STS中运行项目
当在eclipse中绑定tomcat服务器后,发现打开网页为404:资源找不到
原因:绑定完之后,自动镜像了root文件到一个全新的位置
解决办法:在镜像后的文件夹下添加index文件
当创建动态网页项目时,选择2.5和3.0的区别
2.5采用的是XML的方式,3.0采用的是注解的方式
此时运行tomcat时,会出现404 需要在项目--webContent--WEB-INF下放置引导网页
同时在WEB--INF--lib下的web.xml 中有 welcome-file-list标签 可以删去引导网页 但在Servers--Tomcat--web.xml下会有相同的标签以防万一
参考顺序为:先看项目下,在看servers下
当项目中包含java代码时,若在tomcat上启动了网页,会将java代码放置镜像文件下WEB INF--classes下
HTTP协议
览器端向服务器端的请求 服务器端向浏览器端的响应
在form标签中可以设置method值为get/post,一般默认为get,显示方式为url;当设置为post时,url导航栏不会显示,只会以报文的形式显示。
通过浏览器运行实现监听效果 F12--NetWork!
Servlet
public class HelloServlet implements Servlet{
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
}
/**
* 处理请求
*/
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service()!!!");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!--
* 注册
1. 加载类全路径
2. url
-->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
修改form标签的action
<body>
<h1>登录</h1>
<form action="HelloServlet">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" id="username"></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="reset">
<input id="btnSub" type="submit" value="登录">
</td>
</tr>
</table>
</form>
<a href="../index.html">回首页</a>
</body>
Servlet生命周期
public class HelloServlet implements Servlet{
public HelloServlet() {
System.out.println("构造器!!!");
}
/**
* servlet消亡时执行
*/
@Override
public void destroy() {
System.out.println("destory()!!!");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
/**
* 创建对象后执行init
*/
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init()!!!");
}
/**
* 处理请求
*/
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service()!!!");
}
}
Servlet生命周期的面试题
第一次接受请求创建Servlet并执行init()进行初始化操作,然后执行service()处理用户请求页面,如果多次请求只执行service(),当完成所有请求关闭服务器时,执行destory(),对Servlet进行销毁。
ServletConfig和ServletContext区别
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!--
* 注册
1. 加载类全路径
2. url
-->
<context-param>
<param-name>age</param-name>
<param-value>18</param-value>
</context-param>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>encode</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
public class HelloServlet implements Servlet{
private ServletConfig config;
public HelloServlet() {
System.out.println("构造器!!!");
}
/**
* servlet消亡时执行
*/
@Override
public void destroy() {
System.out.println("destory()!!!");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
/**
* 创建对象后执行init
*/
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init()!!!");
this.config = config;
}
/**
* 处理请求
*/
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service()!!!");
String initParameter = config.getInitParameter("encode");
System.out.println("initParameter:"+initParameter);
ServletContext servletContext = config.getServletContext();
System.out.println("servletContext:"+servletContext);
String servletName = config.getServletName();
System.out.println("servletName:"+servletName);
//获取上下文参数
String initParameter2 = servletContext.getInitParameter("age");
System.out.println("initParameter2:"+initParameter2);
//获取真实路径
String realPath = servletContext.getRealPath("login.html");
System.out.println("realPath:"+realPath);
}
}