先创建一个前端页面,来输入数据并提交
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>发射导弹</title>
</head>
<body>
<form action="/dao/daoServlet" method="get" autocomplete="off">
执行者代号:<input type="text" name="username"> <br/>
发射激活码:<input type="password" name="password"> <br/>
目标:<input type="text" name="mubiao"> <br/>
<button type="submit">发射</button>
</form>
</body>
</html>
在 web.xml 文件里进行配置
<!--修改默认主页-->
<welcome-file-list>
<welcome-file>/addDao.html</welcome-file>
</welcome-file-list>
<!--配置Servlet-->
<servlet>
<servlet-name>daoServlet</servlet-name>
<servlet-class>com.itheima.servlet.DaoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>daoServlet</servlet-name>
<url-pattern>/daoServlet</url-pattern>
</servlet-mapping>
Java后端代码
public class DaoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取表单中的数据
String username = req.getParameter("username");
String age = req.getParameter("password");
String score = req.getParameter("mubiao");
//将数据保存到stu.txt文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\stu.txt",true));
bw.write(username + "," + age + "," + score);
bw.newLine();
bw.close();
//给浏览器回应
PrintWriter pw = resp.getWriter();
pw.println("Save Success~");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
详解:
form标签中 属性action 的值是 /dao/daoServlet
dao是端口 daoServlet 是 web.xml配置的映射路径
也就是 标签里的中的路径。通过映射路径找到对应的servlet配置,再找到servlet配置标签里的 中 的全类名,这样页面的数据就进入到后端具体的代码类中。
接下来:
属性method 是请求的类型 get.
autocomplete是自动补全的意思,=off 就是不进行自动补全
daoServlet类中
String username =req.getParameter(“username”);
req 表示 HttpServletRequest请求.
getParameter(“username”)中的参数 username,
是form标签----》input 标签里 name属性的值
String username = 是将页面的数据 赋值给 变量String username 以后就用这个变量名对页面赋值过来的数据做其他操作。这必须与页面数据的类型与名称保持一直,为的是方便区分页面的数据的用途、含义、性能。
然后通过后端 IO流操作 创建一个新文件,用输出流写到这个文件里保存,这就将页面输入的数据永久的保存在硬盘里。
最后通过 resp.getWriter(); 给浏览器发出响应
这里 resp.getWriter 得到的是 一个 PrintWriter 对象
用 PrintWriter对象 的 print()方法 写个响应的消息
PrintWriter pw = resp.getWriter();
pw.print(“save success”);
pw.close();
pw.close();是将这个响应流关闭