Servlet其他操作

servlet的请求方式

Html页面中的from表单的请求方式可以是get和post
a标签的请求方式默认是get
Get请求不安全 参数会显示在url中 参数数据量较小
Post请求安全 是将请求的数据存到请求体中

请求如何到参数
使用a标签 herf=“selectStu?name=zs&id=10”
可得到name和id值
在这里插入图片描述
Form表单 参数是 内部的input框的值
在这里插入图片描述请求和响应
当发送请求之后 ,服务器会给浏览器做出对应的响应结果,此时会有各种响应结果 100 404 400 500
在这里插入图片描述
如果程序发生错误 500 可以使用异常处理,当发生500错误的时候 跳转到一个指定的错误界面。

HttpServletRequest

设置编码
在这里插入图片描述
请求的参数
在这里插入图片描述
获取请求头信息
在这里插入图片描述

HttpServletResponse 响应对象

主要是将servlet获取到的数据显示给浏览器看
查看servlet的class文件
默认响应的文件类型是mime类型中的 text/html
在这里插入图片描述
设置编码
在这里插入图片描述
响应内容
在这里插入图片描述
重定向和请求转发的区别:
重定向是两次请求 url是最后的路径 数据会丢失request
请求转发是一次请求 url是第一次的路径 数据丢失 request
在这里插入图片描述

Servlet的四大作用域

作用域的作用:用来保存数据(键值对形式保存)
application、session、request、pageContext
application(ServletContext)
1、生命周期:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。
2、作用范围:整个Web应用。
3、作用:存储公共数据(上下文)
session 域 (HttpSession)
1、生命周期:在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存 中创建一个session并返回。
2、作用范围:一次会话。
3、作用:保存登录的用户信息、购物车信息等
request域 --(HttpServletRequest)
1、生命周期:在service 方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
2、作用范围:整个请求链(请求转发也存在)。
3、作用: 在整个请求链中共享数据。最常用到:在Servlet 中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去。
pageContext域—(PageContext)
1、生命周期:当对JSP的请求时开始,当响应结束时销毁。
2、作用范围:整个JSP页面,是四大作用域中最小的一个。
3、作用:这个对象代表页面bai上下文,该du对象主要用于访问JSP之间的共享数据。使用zhipageContext可以访问daopage、request、session、application范围的变量。

四大作用域的使用:

Request作用域 :
在这里插入图片描述
在这里插入图片描述
session 作用域 :
浏览器窗口的一次开启和关闭有效
一次会话的前提是服务器没有重新启动

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String parameter = request.getParameter("name");
		HttpSession session = request.getSession();
		//判断是否为新用户
		if(session.isNew()) {
			System.out.println("新用户:"+request.getRemoteHost());
		}else {
			System.out.println("老用户");
		}
		//获取创建Session时的时间
		long creationTime = session.getCreationTime();
		System.out.println("创建Session时间为:"+new Date(creationTime));
		//给作用域存值
		session.setAttribute("name", parameter);
	}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		HttpSession session = request.getSession();
		String attribute =(String)session.getAttribute("name");
		System.out.println("名字:"+attribute);
	}

在这里插入图片描述
Session的默认失效时间是30分钟
在这里插入图片描述
一个全新的浏览器来请求一次,就会创建一个新的session ,同一个浏览器关闭的情况下多次请求指挥创建一个session
Application 实际是 ServletContext
在tomcat服务器开启期间都有效

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取application对象
		ServletContext application=this.getServletContext();
		//给application作用域存值
		application.setAttribute("name", "张三");
	}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取application对象
		ServletContext application=this.getServletContext();
		//通过键name获取值
		String attribute = (String)application.getAttribute("name");
		System.out.println("获取的值:"+attribute);
		
	}

cookie
在这里插入图片描述
Cookie分为两种,属于窗口和子窗口的(未设置生命周期)、属于文本文件的(设置了生命周期)。
在这里插入图片描述
使用cookie 来实现 浏览器上保存用户和密码 第二次登录的时候 就自动获取用户名和密码 设置时间

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置编码
		request.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//创建cookie
		Cookie cookname=new Cookie("username","wangkaile");
		Cookie cookwd=new Cookie("passwd","123456");
		//设置失效时间
		cookname.setMaxAge(60);
		cookwd.setMaxAge(60);
		//将用户名和密码保存到浏览器中
		response.addCookie(cookname);
		response.addCookie(cookwd);
	}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置编码
		request.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String str;
		String[] user=new String[2];
		//获取服务中存储的cookie
		Cookie[] cookie=request.getCookies();
		if(cookie!=null) {
			for (int i = 0; i < cookie.length; i++) {
				user[i]=cookie[i].getValue();
			}
			str="<table width=\"300px\" height=\"100px\">\r\n" + 
					"		<form action=\"www.baidu.com\">\r\n" + 
					"			<tr>\r\n" + 
					"				<td>用户名:</td>\r\n" + 
					"				<td><input type=\"text\" value='"+user[0]+"' name=\"name\" required/></td>\r\n" + 
					"			</tr>\r\n" + 
					"			<tr>\r\n" + 
					"				<td>密码:</td>\r\n" + 
					"				<td><input type=\"password\" value='"+user[1]+"' name=\"passwd\" required/></td>\r\n" + 
					"			</tr>\r\n" + 
					"			<tr>\r\n" + 
					"				<td align=\"right\"><input type=\"submit\" value=\"登录\" id=\"yuan\"/></td>\r\n" + 
					"				<td align=\"left\"><button id=\"yuan\"><a href=\"register.html\" >注册</a></button></td>\r\n" + 
					"			</tr>	\r\n" + 
					"		</form>\r\n" + 
					"		</table>";
		}else {
			str="<table width=\"300px\" height=\"100px\">\r\n" + 
					"		<form action=\"Login\">\r\n" + 
					"			<tr>\r\n" + 
					"				<td>用户名:</td>\r\n" + 
					"				<td><input type=\"text\" name=\"name\" required/></td>\r\n" + 
					"			</tr>\r\n" + 
					"			<tr>\r\n" + 
					"				<td>密码:</td>\r\n" + 
					"				<td><input type=\"password\" name=\"passwd\" required/></td>\r\n" + 
					"			</tr>\r\n" + 
					"			<tr>\r\n" + 
					"				<td align=\"right\"><input type=\"submit\" value=\"登录\" id=\"yuan\"/></td>\r\n" + 
					"				<td align=\"left\"><button id=\"yuan\"><a href=\"register.html\" >注册</a></button></td>\r\n" + 
					"			</tr>	\r\n" + 
					"		</form>\r\n" + 
					"		</table>";
		}
		PrintWriter pw = response.getWriter();
		pw.write(str);
	}

Javaweb项目的三层架构
在这里插入图片描述
在这里插入图片描述
web项目的打包和部署
将eclipse写的Javaweb项目,放到tomcat中进行部署(启动)
步骤:
将Javaweb项目使用eclipse打包为war
将warbao放到tomcat的webapps下 就可以了
启动tomcat 会自动将war进行解压为一个新项目
在这里插入图片描述
切记:不可以将eclipse中的web项目直接拷贝到tomcat的webapps下启动

总结:

Javaweb项目:B/s架构的web应用程序 Cs bs Servlet :
作用在服务器端的java应用程序 Tomcat的servletapi.jar

Servlet 的作用: 获取请求 响应数据 Servlet的创建: 继承 httpservlet
、genericservlet 类 实现 servlet 接口 Servlet的工作流程:
浏览器发送请求 ------Tomcat容器 -------url 找servlet (实例化 初始化 执行(业务层、dao))-------响应给浏览器htm---------销毁 Servlet的生命周期 : 实例化 构造方法
初始化 init 执行 service doget dopost 销毁 destory Servlet的四个作用域:
作用域对象的作用是什么? 以键值对的形式保存数据的
Page request session application Servlet的web程序的编写顺序 :
Jdk、编码、Tomcat ------创建web项目-----创建servlet-----配置servlet(注解、容器)-----service ------dao 一个请求对应一个servlet Servlet此时既当爹又当妈 service的调用 html数据的显示
Servlet响应数据到浏览器的时候:设置编码 设置响应文件的类型 MIME MIME类型如果浏览器能够直接显示
就显示,否则下载 Javaweb项目的打包和部署
War 包 到Tomcat的webapps下 ,启动 自动解压为项目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值