跟随小破站学习java web第七天

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);
	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值