认识和熟悉Servlet
Servlet= Server+let 服务器小程序
一个Servlet就是一个服务器端的java小程序,用于处理请求,生成动态响应。
一个Servlet用于处理某种请求,如登录请求、注册请求
创建Servlet就是创建Servlet类
每个web应用程序都有一个而且只有一个全局的配置文件,叫做web.xml,用于配置程序的所有信息,如配置servlet
每个Servlet相当于一个web资源。我们通过url-pattern给它分配一个访问路径。
创建Servlet的步骤:
1) 实现Servlet接口,创建一个Servlet类
2) 实现继承的所有方法,将生成的throw new UnsupportedOperationException(“Not supported yet.”)语句全部删除.
3) 在service()方法中编写代码,处理请求
4) 在web-inf目录下创建web.xml文件,然后添加Servlet的配置,其中url-pattern是用于设置访问servlet的路径。路径以/开头,后面自己定义路径名称即可。
5) 设置表单的action属性为要访问的servlet的路径,在设置表单的action属性的时候,不需要添加/,直接写servlet的路径即可。
下面以cet查询成绩网页为例:(IDE:NetBeans)
html页面:
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--link元素用于引用外部样式表
rel:relation关系,该属性说明引用的文件和当前页面的关系,stylesheet说明引用的文件是当前页面的样式表
href: 指定引用的文件的路径,可以使用相对路径或绝对路径
Ctrl+\ 智能提示
-->
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div>
<!--Ctrl+/ 注释/取消注释-->
<!--h1+hr+br->tab-->
<h1>用户登录</h1>
<hr>
<br>
<!--如果需要将数据提交给服务器,则必须将表单元素包含在一个表单内-->
<!--form: 表单,是一个用于放置表单元素的区域-->
<!--点击查询就是发送一个请求给服务器,发送了两个数据,叫做两个请求参数-->
<!--id属性主要是前端使用,操作css和js的使用-->
<!--需要指定元素的name属性区分参数,服务器获取参数时候根据参数名获取参数值
区分大小写
-->
<!--form元素的action属性指定该表单的数据,也就是发送的请求提交给服务器的哪个组件处理-->
<form action="cs">
账号:<input type="text" name="Id">
<br><br>
密码:<input type="text" name="KeyWord">
<br><br>
<!--input元素的type设置为submit则显示一个提交按钮-->
<!--如果需要提交表单中的数据,必须要用提交按钮,除非你使用ajax技术发送请求-->
<!--value属性指定按钮的显示文字-->
<input type="submit" value="登录">
</form>
</div>
</body>
</html>
Servelet类:
package com.qdu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 创建一个Servlet类,用于处理查询四级的请求
* <br>实现Servlet接口,创建一个Servlet类,实现相当于继承
* @author NIIT
*/
//Ctrl+Shift+I 修复导入/导包 import
public class Cet4Servlet implements Servlet{
@Override
public void init(ServletConfig config) throws ServletException {
//Ctrl+E 删除当前行或选中的多行
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//service()方法中编写处理请求的代码
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//该方法接受两个参数
//第1个参数是一个请求对象,包含请求的所有信息,如请求参数
//第2个参数是一个响应对象,包含给到客户端的响应的信息,如响应内容
//这两个参数是自动传入的,service()由服务器帮你调用,我们只需要操作这两个对象即可
//request请求
//response响应
String rId = "Bert";
String rKeyWord = "666";
//1.获取请求参数 request parameter
//该方法根据请求参数名获取参数值
//这里获取了参数名为studentId的参数的值,存储到id变量中
String id=req.getParameter("Id"); //Ctrl+Shift+上/下 向上/向下复制
String key=req.getParameter("KeyWord"); //Ctrl+Shift+上/下
//2.执行业务逻辑,处理请求
//Random类公开了一些方法,用于生成随机数
//Random类的方法基本都是非静态的,所以需要创建对象访问
//Random rand=new Random(); //Ctrl+Shift+I
//int score=rand.nextInt(711); //nextInt(int x)用于生成0到指定值(不包含)之间的随机整数
//3.生成响应
//调用响应对象的getWriter()方法可获取一个输出响应内容到客户端的打印器
//返回一个PrintWriter对象,用于输出内容到客户端
//调用响应对象的setContentType()设置响应内容的内容类型和字符集编码
res.setContentType("text/html;charset=utf-8"); //中间是分号
PrintWriter out=res.getWriter();
if(id.equals(rId)&&key.equals(rKeyWord)){
//println()方法用于输出响应内容到客户端,可以直接输出html内容
out.println("<h1>用户登录成功</h1>");
out.println("<hr>");
out.println("<br>欢迎登录,"+id+"。");
}
else{
out.print("<h1>用户登录失败,账号或密码错误,请重新登录。</h1>");
}
}
@Override
public String getServletInfo() {
//如果引用类型的返回值不知道返回什么,可以先返回null
return null;
}
@Override
public void destroy() {
}
}
总之,用表单提交的数据,可以在servelet里用 req.getParameter()获取,在用res中的方法生成响应。