Servlet

Tomcat子目录分别存放的文件类型:

一、bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。

重要:
很多环境变量的设置都在此处,例如可以设置JDK路径、TOMCAT路径

startup 用来启动tomcat

shutdown 用来关闭tomcat

修改catalina可以设置tomcat的内存

二、conf目录主要是用来存放tomcat的一些配置文件。

重要:

server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码

web.xml可以设置tomcat支持的文件类型

context.xml可以用来配置数据源之类的

tomcat-users.xml用来配置管理tomcat的用户与权限

在Catalina目录下可以设置默认加载的项目

三、lib目录主要用来存放tomcat运行需要加载的jar包。

例如,像连接数据库的jdbc的包我们可以加入到lib目录中来。

logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)

在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中 (xxxxx为日期)

在linux环境中,控制台的输出日志在catalina.out文件中

四、temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

五、webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。

当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。

六、work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。

清空work目录,然后重启tomcat,可以达到清除缓存的作用。

Servlet web.xml配置
一、

login2 1、 Servlet的类名 servlet的全类名

<servlet-class>com.hisoft.servlet.login2</servlet-class>

<load-on-startup>3</load-on-startup>
2、Servlet的类名 Servlet的访问路径 login2 /login2

调用方式:http://localhost:8080/ScervletDemo/login
端口 项目名+Servlet类名

实现顺序:login––Servlet的类名 – Servlet的类名–<servlet-

               class>servlet的全类名</servlet-class> 

二、快速建立自动生成@webServlet("/Servlet类名")注解

web容器启动时,他会为每个web应用程序都创建一个对应的ServletContext对象,代表当前web应用。ServletConfig对象中维护了ServletContext的引用,编写Servlet时候,可以通过ServletConfig.getServletContext来获取ServletContext对象;

ServletConfig:由web容器创建,一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet
有效,一个servlet的ServletConfig对象不能被另一个servlet访问。

ServletContext:由web容器创建,对任何servlet,任何人在任何时间都有效,等于是全局的对象。

所有的Servlet对象共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯;

每一个Servlet对象的ServletConfig不能被另一个Servlet对象访问;

Servlet访问路径配置三种方式:

	1、以 / 开头;
	如:/login
	2、以/* 结尾
		如:/login/*
	3、加后缀名
		*.do、*.action

请求方式:一、get:1、地址栏中直接输入
2、
3、超链接
4、默认为get请求
二、Post:目前仅知

http请求的组成:请求行+请求头+请求体

Post 和Get的区别:1、请求行不同:Post的请求行 路径只是单纯的路径 Get 请求行路径中包含用户输入的信息

get请求的时候用户输入的内容在请求url中,会在地址栏中显示,数据泄露,不安全

Pose有请求体 userName = qqq
Get没有请求体
如果用户输入的信息过多 get请求时数据在地址栏中,地址栏的空间是有限的。一般为1kb

http请求头中参数

Accept: text/html,image/* 客户端识别文件类型
Accept-Charset: ISO-8859-1 客户端字符集
Accept-Encoding: gzip 客户端支持编码类型 gzip 压缩格式
Accept-Language:zh-cn 客户端语言
Host: www.yanqi.com:80 访问服务器地址
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT和
Last-Modified 一起使用 控制缓存 (tomcat 提供缓存 过滤器 缓存处理)
Referer: http://www.itcast.com/index.jsp (重要) 防止盗链 获取网站域名地址
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 浏览器类型(文件下载时,不同浏览器进行不同处理) 不同的浏览器器存在兼容性!!
Connection: close/Keep-Alive 请求后连接是关闭还是保持
Date: Tue, 11 Jul 2000 18:23:51 GMT 请求时间

HTTPServletResponse

重定向:一个Servlet接收到客户端请求后,通知客户端去请求另外一个Servlet

两种方式:1、重定向一
		response.setStatus(302);
		response.setHeader("Location", "./login.html");
	     重定向二
		response.sendRedirect("./login.html");

重定向后地址栏会发生改变,不能后退;
在这里插入图片描述

**向浏览器输入内容:**
PrintWriter out = response.getWriter();
      out.print("您访问的资源不存在,3秒后跳转");
        通过response把内容输入到浏览器内

	response.setCharacterEncoding("utf-8");
	response.setContentType("text/html;charaet=utf-8");//可以告诉浏览器使用什么样的编码去解析我们htm;
	解决响应时的乱码

自动刷新页面:
两种方式:1、response.setHeader(“refresh”,“3,;url=./login.html”) (doget()或dopost()内部)

		  2、<meta http-equiv="refresh" content="3;url=./login.html">  (写在html文件中的<head>标签内部)

HTTPServletRequest:

	常用API:一、获取请求行信息
		1、获取请求的方法:request.getMethod();
		2、获取请求的URI:request.getResquestURI();
		3、获取请求的URL:request.getrequestURL();
		4、获取请求行的协议:request.getProtocol();
		5、获取客户ip地址:request.getRemoteAddr()

		二、获取请求头中的API
		getHeaders(String name)方法--返回值:枚举类型的集合 Enumeration<String>
		getHeaderNames方法--Enumeration<String>,返回的内容是请求头中的key的集合
		getIntHead(name)方法 ---返回值:int 如果请求头的信息是整型的,可以通过getIntHead()获取
		getDateHead()方法--返回值:long (日期对应毫秒)

	get请求乱码解决方案:一、把编码过程逆转解决乱码

					1、userName = URLEncoder.encode(uaerName,"iso-8859-1");
					   userName = URLDecoder.decode(username,"utf-8");
					2、new String(username.getBytes("iso-8859-1"),"utf-8")

				二、更改字符集:配置Tomcat的默认解码字符集  在conf/server.xml中
				<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>

在这里插入图片描述 在“8843”和面加上URIEncoding=“utf-8” 这样就把所有项目的解码字符集定为utf-8; (不建议使用。修改tomcat中server.xml。会很死板。如果一个tomcat部署2个项目,1个utf-8;1个是gbk;会出现乱码)

		获取请求参数:请求参数:用户提交的数据;
		key=value
		String str = request.getParameter("key")
		获取多个类容
		String[] values = getParameter("name")
		一般用于复选框checkbox 一个name对应多个value
		request.getParameterMap()获取请求体的全部内容,自动封装Map<String,String[]>
			遍历输出:
		Map<String,String[]> map = request.getParameterMap();
		for(String key:map.keySet()){
			String[] values = map.get(key);
			for(String value : values){
				system.out.println(key+":"+value)
				}
			}



	post请求乱码问题解决方案:

		request.setCharacterEncoding();在获取参数之前设置字符集

	转发传递数据:RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servlet");
			requestDispatcher.forward(request,response);    ---执行被转到的servlet
		      system.out.println("转发之后");

			在此Servlet中也可以对数据进行操作,操作完再转发

	请求转发和重定向的区别:1、重定向是页面跳转 所有语言通用方式302+Location
				2、重定向共产生两次请求、两次响应。url地址栏显示第二次请求资源路径(重定向对用户可见)		
				3、转发:再一次请求过程中,服务器端有多个资源共同对请求数据进行处理
				4、转发,只会产生一次请求,一次响应,转发是服务器内部行为,转发对用户不可见

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值