Servlet基础概念

Servlet基础概念

1.什么是servlet

​ Sun(Oracle)公司制定的一种用来 扩展Web服务器功能的组件规范.

2.servlet如何来运行

​ 需要部署到容器(服务器tomcat)中才能运行.

3.HTTP协议

​ 1.他是网络传输协议,特点:一次请求一次响应
​ 2.数据包结构:请求(请求行,消息头,消息正文),响应(状态行,响应头,响应正文)

4.开发Servlet的步骤

① 编写一个实现Servlet接口或继承HttpServlet的Java类

② 使用javac命令编译源文件为字节码文件

③ 将编译完的组件打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdqnJA1R-1624811316662)(file:///C:\Users\Thinkpad\AppData\Local\Temp\ksohtml5784\wps1.png)]

④ 部署:将appName整个文件夹拷贝到Tomcat的webapps文件夹下

⑤ 启动Tomcat并访问Servlet:在地址栏中输入符合一定规范的地址

(URL在web.xml描述文件中可以找到)

5.容器如何找到service方法

在这里插入图片描述

6.如何通信

在这里插入图片描述

7.简单的案例1:实现用户登录

7.1首先创建maven项目,导入前端所需要的一些jar包。
7.2将这个maven项目添加到服务器下。

在这里插入图片描述

7.3书写前端代码

注意要写在webapp下,因为服务端每次去找地址时,默认是在webapp下去找的。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<form action="LoginServlet" method="post">
			姓名:<input type="text" name="userName"/><br>
			密码:<input type="password" name="userPwd"/><br>
			<input type="submit" value="登录">
		</form>
	</div>
</body>
</html>
7.4web.xml配置文件
<!--用户登录-->
  <servlet>
  		<servlet-name>login</servlet-name>
  		<servlet-class>day01.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  		<servlet-name>login</servlet-name>
  		<url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
7.5Servlet业务层
package day01;
/*
 * 用户登录
 */
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.filters.SetCharacterEncodingFilter;

public class LoginServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		//设置请求字节码为utf-8
		//setCharacterEncoding("utf-8");针对post请求
		req.setCharacterEncoding("utf-8");//get请求不用,因为服务器中规定了get请求设置为"utf-8";
		
		
		//获取请求数据
		String userName=req.getParameter("userName");
		String userPwd=req.getParameter("userPwd");
		//假设用户的名字和密码 admin 123456
		System.out.println(userName+","+userPwd);
		String name="admin";
		String pwd="123456";
		//响应数据并且设置响应类型和字符集
		res.setContentType("text/html;charset=utf-8");
		PrintWriter pw=res.getWriter();
		if(name.equals(userName)&&pwd.equals(userPwd)){
			pw.println("登录成功");
		}else{
			pw.println("登录失败");
		}
		
	}
}

7.6处理结果

在这里插入图片描述

我们输入姓名和密码,点击登录后;
在这里插入图片描述

LoginServlet会帮助我们处理业务逻辑并返回到结果到前端页面。

8.简单的案例2:页面输出用户的爱好

8.1前端代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="hobbyServlet">
		爱好:
		足球:<input type="checkbox" name="bby" value="1"/>
		篮球<input type="checkbox" name="bby" value="2"/>
		乒乓球<input type="checkbox" name="bby" value="3"/>
		羽毛球<input type="checkbox" name="bby" value="4"/><input type="checkbox" name="bby" value="5"/>
		<input type="submit" value="确定">
	</form>
</body>
</html>
8.2xml配置文件
  <servlet>
  		<servlet-name>bby</servlet-name>
  		<servlet-class>day01.HobbyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  		<servlet-name>bby</servlet-name>
  		<url-pattern>/hobbyServlet</url-pattern>
  </servlet-mapping>
8.3Servlet业务层
package day01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HobbyServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		//设置响应浏览器的类型
		res.setContentType("text/html");
		//通过HttpServletResponse获取字符输出流
		PrintWriter pw=res.getWriter();
		//获取爱好得数据
		String[] str=req.getParameterValues("bby");
		if(str!=null){
			for(String s:str){
				System.out.println(s);
				pw.println(s);
			}
		}
	}
}

8.4处理结果

在这里插入图片描述
我们选中这四项然后点及确定在这里插入图片描述
我们可以得到我们 所选中的结果;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值