Servlet的创建、部署与运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/84800039

一、实例1

hello是纯手工开发,当会纯手工开发之后,再进行IDE开发就比较得心应手了

package  chapter10;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/*设置好两个类型之后
获取参数name
通过name,输出不同的文本*/

public class Hello extends HttpServlet
/*
 * 自定义的Servlet是HttpServlet类的子类就好
 * Servlet必须有包名,包名自己定义
 * */
{
	public void service(HttpServletRequest request,HttpServletResponse response)throws IOException
	//两个形参都是接口类型的
	{
		response.setContentType("text/html;charset=GB2312");//通过response设置响应的MIME类型//是text类型的html,中文的编码格式
		PrintWriter out=response.getWriter();//通过getWriter()获取到out
		String name=request.getParameter("name");//客户端穿过一个参数叫name,通过getParameter获取到赋值给name局部变量
		out.print("<Html><Body>");//输出的是html,所以首先输出...
		if(name==null)
		{
			out.println("你需要输入名字!");
		}
		else if(name.equals("zhangfeng"))
		{
			out.print("<h2>您好,欢迎"+name+"老师");//html中有没有回车有什么区别?
			out.println("</h2>");
		}
		else 
		{
			out.println("<h2>您好,欢迎"+name+"同学</h2>");
		}
		out.println("</body></html>");
	}
}

实现Servlet接口的对象必须有包名,包名自己定义

但是用命令行编译的时候,有以下错误,显示......不存在

1、编译的时候,找不到包和类、接口,那么包和class文件在哪呢?用到的HttpServlet类、HttpServletRequest接口、HttpServletResponse接口都放到什么地方呢?

2、如果能够通过编译的话,用户发出的请求是怎么来的?请求肯定是实现了接口的类的某一个对象,那么实现了接口类的什么地方呢?

3、最终要放到Tomcat中去,因此请求发过来之后,Tomcat要接受用户请求,然后把用户信息打包,打包成某个接口实现类的对象,因此,在Tomcat中肯定有这个接口的实现类。Tomcat提供了实现这两个接口的类的话,是不是也应该包含别的呢?

4、Tomcat中应该提供好了这些类和接口,所以可以从Tomcat中找一下,在lib文件中

(一)编译上面的文件

  1. 首先,将bin文件夹下的servlet-api拷贝到与Hello.java相同的路径下
  2. 如何在命令行中进行编译呢?
  3. 在命令行中,通过javac -cp servlet-api.jar Hello.java语句进行编译,而不是直接javac Hello.java
  4. 因为用到了jar文件,所以前面加-cp,意思是class  pass,通过-cp变量来指定jar文件,也就是说,我需要的类都在servlet-api里面,可以去这里面找。这里面可以放多个jar文件,上面的做法指定一个临时的环境变量不是永久的。当然也可以配置环境变量,这样的做法是永久的配置一个class   pass环境变量。
  5. 下图则生成了一个class文件,如何应用class文件,将其放到Tomcat中去呢?

(二)将配置出来的class文件放到Tomcat中去

  1. 在webapps下面,每一个文件夹代表一个网站或者是一种应用,所以可以新建一个first文件
  2. 怎么放Hello.class文件呢?
  3. 因为不是普通的html或者是页面,如果是普通的html或者是页面,直接放进去就可以了
  4. 下面讲解放置class文件的方法
  • E:\Tomcat\apache-tomcat-8.5.35\webapps\first\WEB-INF,先在first文件下,建立一个WEB-INF文件夹,这个是Tomcat的规定,放Web用的基本信息
  • 为什么是放到INF中呢?
  • 然后WEB-INF文件夹中放什么呢?相应的class文件和jar文件都可以放到那里面,放置的方法如下
  • E:\Tomcat\apache-tomcat-8.5.35\webapps\first\WEB-INF\classes,WEB-INF文件夹下,新建一个classes文件夹,里面放相应的已经编译好的class文件,包括java类,也放到这里面
  • 放class和java类之前,因为类有包名,所以直接放过来是不可以的,所以也要对应包在classes文件下新建文件夹
  • E:\Tomcat\apache-tomcat-8.5.35\webapps\first\WEB-INF\classes\chapter10,建好包之后,把class放进去,这样就相当于配置好了
  • 但是这个时候,只是把class类放到Tomcat中,Tomcat还不认识它
  • 每一个web应用中,比如ROOT文件夹下有,点开之后是,这个是为了说明或者配置web应用的
  • 所以在first文件下的WEB-INF文件中,也放一个xml,代码如下
<?xml version="1.0"  encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>chapter10.Hello</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>
  • 标记是web-app,结尾也是web-app
  • 实际开发的时候,直接将这一部分拷过来就可以
  • web-app中放所有的servlet
  • 每一个servlet都要配两部分
  • 第一部分是servlet元素,放到web-app下面,,这里的名字可以自己取,但是取完之后,就可以访问这个元素了。这里就是hello对应的class文件,或者是带包名的class类名。这里只是基本的名字和类
  • 这里配置路径,这里指路径/hello,当通过/hello访问这个网站first的时候,就访问hello的servlet,然后,通过hello访问这个类。这就是配置的过程。

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/84800039
今日推荐