因为一直没有接触过后端,在Leader command 下学习了Servlet ,因为理解、使用不足,此文仅供后端新手理解学习
基础概念抽时间补~~~~~~~~~~~~~~~~
入门学习
Result Effect
- 前端UI - get请求
- 前端UI - psot请求
- 后端控制台输出
Area Code
- 创建Servlet继承HttpServlet - FirstServlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("Hello boy");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("Hello Girl");
}
}
- WEB-INF 注册Servlet - web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="3.0"
>
<!-- servlet 定义 -->
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>servlet.FirstServlet</servlet-class>
</servlet>
<!-- servlet 映射 -->
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/FirstServlet</url-pattern>
</servlet-mapping>
</web-app>
- 调用者 → 可以是jsp、html - index.jsp(这里我是前后端未分离的状态)
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
</head>
<body>
<h1><a href="servlet/FirstServlet">Get Servlet 请求方式</a></h1>
<form action="servlet/FirstServlet" method="post">
<input type="submit" value="Post Servlet 请求方式"/>
</form>
</body>
</html>
开发注意
- Servlet、HttpServlet的方法调用不到
解决方式 → 导入jar包
如本机已安装tomcat,可以去tomcat下的lib文件夹找到jar包,然后粘到项目下的lib包即可(当然记得添加libraries~)
- web.xml
示例代码
<!-- servlet 定义 -->
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>servlet.FirstServlet</servlet-class>
</servlet>
<!-- servlet 映射 -->
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/FirstServlet</url-pattern>
</servlet-mapping>
1.servlet 与 servlet-mapping 中 servlet-name的值必须相同
2.servlet内 servlet-class 是Servlet的路径,不然无法找到
3.servlet-mapping内 url-pattern 最前方的 / 若有则是绝对路径,如无则是相对路径
- web.xml - Servlet的访问顺序(虽然图比较老,但是知识应该没老 ~)
实践过程
Result Effect
- 前端登录UI
- 前端请求成功UI
- 前端请求失败UI
- 后端控制台输出
Area Code
- LoginServlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet请求");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("doPost请求");
System.out.println("帐户:"+username);
System.out.println("密码:"+password);
if (username!=""&&password!=""){
request.getRequestDispatcher("/success.html").forward(request, response);
}else{
request.getRequestDispatcher("/unsuccess.html").forward(request, response);
}
}
}
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="3.0"
>
<!-- servlet 定义 -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<!-- servlet 映射 -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/servlet/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
- success.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="txt/html; charset=utf-8" />
<title>index.html</title>
</head>
<body>
success!!!
</body>
</html>
- unsuccess.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="txt/html; charset=utf-8" />
<title>index.html</title>
</head>
<body>
failed!!!
</body>
</html>