Servlet的使用

Servlet的使用

Servlet就是在服务器内部,接收来自页面的请求、并针对请求做出响应的角色!
Servlet就是浏览器页面与后台Tomcat服务器的连接桥梁!!!

什么是Servlet???
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

总结一句话:Servlet就是一个类(类名可以随便取!),这个类实现了Servlet接口!!!

一、如何在动态web项目中创建Servlet呢?

/*
 	创建的Servlet类为什么不直接实现Servlet接口,而是继承HttpServlet呢?
 	原因:自定义的Servlet类继承了HttpServlet,HttpServlet继承了GenericServlet,这GenericServlet实现了Servlet接口
 	这样的话,我们自定义的Servlet类既没有违背实现Servlet接口的原则,又拓展了功能!
 	
 	1、创建一个类继承HttpServlet
 	2、点击黄色警告,添加一个序列化的id(这一步不做也行,但本人有强迫症)
 	3、重写来自HttpServlet中的service()方法,因为Servlet可以接受请求、响应数据,书写代码的位置就是在service方法内部!
 	4、将方法中自动生成的代码删除
 	5、为了能够更好的表示请求与响应对象,将service方法的参数改为request、response
 	6、告知tomcat服务器,当前的这个类是一个能够接受请求、响应数据的Servlet!!!
 		这个告知的过程称为Servlet的注册!
 		注册的方式有两种:
 			(1)、web.xml文件
 			(2)、注解
 		以后开发建议使用注解,简明扼要!!!
 		在注册Servlet并为Servlet设置访问路径时,要注意:
 			(1)、注解与web.xml文件同一时间只能存在一个!
 			(2)、不管是注解还是web.xml文件,在设置路径时,必须保证/的存在!
 			(3)、多个Servlet在配置时,不允许出现同样的访问路径!
 */
@WebServlet("/haha")
public class HahaServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	/*
	 	只要通过浏览器url访问的路径与当前Servlet类设置的访问路径一致时,就会自动执行service方法!
	 */
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("HahaServlet接收到了请求~");
	}
}

二、Servlet中如何获取请求中的数据

@WebServlet("/student")
public class StudentServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("StudentServlet接收到请求~");
		/*
		 	数据是从页面以请求的方式带到tomcat服务器Servlet内部的,针对请求的操作,需要用到的对象就是
		 	当前service方法中的request参数!
		 	1、获取数据的方法
		 		request.getParameter("数据关键字") ==> String字符串
		 		request.getParameterValues("数据关键字") ==> String[]字符串数组
		 		如果关键字只对应一个值,那就用第一个方法,得到字符串
		 		如果关键字对应多个值,那就用第二个方法,得到字符串数组
		 	
		 	2、请求参数获取时如何处理中文乱码
		 		get请求:
		 			tomcat8.0及之后的版本中,自动针对get请求处理了中文乱码!
		 			tomcat8.0之前的版本,也需要手动处理中文乱码!
		 			new String(sname.getBytes("iso8859-1"), "utf-8");
		 		post请求:
		 			不论哪一个版本的tomcat,都没有针对post请求做出中文乱码处理
		 			所以我们都需要手动设置编码格式!我们只需要在获取数据之前,添加以下这行代码即可!
		 			request.setCharacterEncoding("utf-8");
		 */
		request.setCharacterEncoding("utf-8");
		String sname = request.getParameter("sname");
		String gender = request.getParameter("gender");
		String[] hobby = request.getParameterValues("hobby");
		String degree = request.getParameter("degree");
		System.out.println(sname);
		System.out.println(gender);
		System.out.println(Arrays.toString(hobby));
		System.out.println(degree);
		
		//response响应数据
		/*
		 * response.setContentType("text/html;charset=utf-8");
		 * response.getWriter().write("今天天气真美丽~");
		 */
		/*
		 	如何在Servlet中进行路径、页面的跳转
		 	1、请求转发
		 	2、重定向
		 */
		//请求转发
		//request.getRequestDispatcher("index.html").forward(request, response);
		//重定向
		response.sendRedirect("index.html");
	}
}

三、登录案例

效果:
登录页面中输入用户名及密码,点击登录按钮,后台接收请求,完成数据库操作,将结果响应回页面!
思路:
1、建库、建表
在这里插入图片描述
2、在项目中创建User的实体类与表数据进行关联
在这里插入图片描述
3、书写登录页面login.html
在这里插入图片描述
4、创建处理登录请求的Servlet类
在这里插入图片描述
5、在Servlet内部获取到提交的用户名和密码
在这里插入图片描述
6、构建Dao模块,将得到的数据传递到Dao中
在这里插入图片描述
7、将mysql驱动、dbutils、druid的jar包导入,将druid.properties连接配置文件,以及DruidUtils工具类导入工程
在这里插入图片描述
在这里插入图片描述
8、在UserDao中书写jdbc操作代码
在这里插入图片描述
9、在Servlet中进行响应处理
在这里插入图片描述
10、改进项目,增加业务逻辑层Service
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值