一、何為Servlet
Servlet就是一個介面,定義了Java類被瀏覽器訪問到(tomcat識別)的規則,
將來我們自定義一個類,實作Servlet介面,復寫方法,
public class MyServlet implements Servlet

二、如何配置Servlet
1.在web.xml中配置
<!--配置Servlet -->
<servlet>
<servlet-name>SelUserServlet</servlet-name>
<servlet-class>com.beizhen.servlet.SelUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SelUserServlet</servlet-name>
<url-pattern>/seluser</url-pattern>
</servlet-mapping>
2.通過注解配置
@WebServlet("/seluser")

三、執行原理
1.當服務器接受到客戶端瀏覽器的請求后,會決議請求URL路徑,獲取訪問的Servlet的資源路徑
2. 查找web.xml檔案,是否有對應的標簽體內容,
3. 如果有,則在找到對應的全類名
4. tomcat會將位元組碼檔案加載進記憶體,并且創建其物件
5. 呼叫其方法
四、Servlet生命周期
1.Servlet 通過呼叫 init () 方法進行初始化,init 方法只呼叫一次,
2.Servlet 呼叫 service() 方法來處理客戶端的請求,
3.Servlet 通過呼叫 destroy() 方法終止(結束),destroy() 方法只會被呼叫一次
4.最后,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的,
五、使用servlet實作學生資訊后臺管理
學生資訊后臺管理效果圖

專案分包圖:

查詢所有學生 SelStuServlet
package com.beizhen.servlet;
import com.beizhen.bean.Student;
import com.beizhen.bean.User;
import com.beizhen.dao.StudentDao;
import com.beizhen.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
/**
* @author : Bei-Zhen
* @date : 2020-10-06 13:00
*/
@WebServlet("/selstu")
public class SelStuServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//獲得所有學生資訊
StudentDao studao = new StudentDao();
List<Student> stus = studao.queryAllStus("");
//列印流
PrintWriter out = response.getWriter();
out.write("<html><body><h1 align='center'>學生資訊管理系統</h1>" +
"<div align='center'><form action='selstuat' method='get'>" +
"<input type='text' name='sName'>" +
"<button type='submit'>查詢</button></form></div>" +
"<table border='1' cellspacing='0' cellpadding='10' align='center'>");
out.write("<tr><td>"+"學生編號"
+"</td><td>"+"學號"
+"</td><td>"+"學校"
+"</td><td>"+"姓名"
+"</td><td>"+"昵稱"
+"</td><td>"+"手機號"
+"</td><td>"+"生日"
+"</td><td>"+"添加操作"
+"</td><td>"+"洗掉操作"
+"</td><td>"+"修改操作"
+"</td></tr>");
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
out.write("<tr><td>"+stu.getsId()
+"</td><td>"+stu.getsNum()
+"</td><td>"+stu.getsSchool()
+"</td><td>"+stu.getsName()
+"</td><td>"+stu.getsNickname()
+"</td><td>"+stu.getsTel()
+"</td><td>"+stu.getsBDay()
+"</td><td>"+"<a href='register.jsp' style='text-decoration:none'>添加</a>"
+"</td><td>"+"<a href='/delstu?id=" +stu.getsId() + "' style='text-decoration:none'>洗掉</a>"
+"</td><td>"+"<a href='/updstu?sId=" +stu.getsId() + "&sNum=" + stu.getsNum()
+ "&sSchool=" + stu.getsSchool() + "&sName=" + stu.getsName()
+ "&sNName=" + stu.getsNickname() + "&sTel=" + stu.getsTel()
+ "&sBDay=" + stu.getsBDay() + "' style='text-decoration:none'>修改</a>"
+"</td></tr>");
}
out.write("</table></body></html>");
}
}
實作增加功能直接跳轉注冊頁面,注冊成功直接跳轉selstu

package com.beizhen.servlet;
import com.beizhen.bean.Student;
import com.beizhen.dao.StudentDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author : Bei-Zhen
* @date : 2020-10-06 13:27
*/
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//獲取請求引數
String sNum = request.getParameter("sNum");
String sSchool = request.getParameter("sSchool");
String sName = request.getParameter("sName");
String sNickname = request.getParameter("sNickname");
String sTel = request.getParameter("sTel");
String sBDay = request.getParameter("sBDay");
Student stu = new Student(0,sNum,sSchool,sName,sNickname,sTel,sBDay);
int i = new StudentDao().addStu(stu);
PrintWriter out = response.getWriter();
if(i != 0){
out.write("<script type='text/javascript'>");
out.write("alert('恭喜你注冊成功!');");
out.write("alert('即將跳轉學生資訊管理!');");
out.write("window.location='selstu';");
out.write("</script>");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
實作洗掉功能,通過get請求向服務器發送url獲得id
<a href='/delstu?id=" +stu.getsId() + "' style='text-decoration:none'>洗掉</a>

package com.beizhen.servlet;
import com.beizhen.bean.Student;
import com.beizhen.dao.StudentDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author : Bei-Zhen
* @date : 2020-10-06 15:31
*/
@WebServlet("/delstu")
public class DelStuServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//獲取請求引數
int id = Integer.parseInt(request.getParameter("id"));
int num = new StudentDao().deleteStu(id);
PrintWriter out = response.getWriter();
if(num != 0){
out.write("<script type='text/javascript'>");
out.write("alert('恭喜你洗掉成功!');");
out.write("window.location='selstu';");
out.write("</script>");
} else {
out.write("<script type='text/javascript'>");
out.write("alert('洗掉失敗!');");
out.write("window.location='selstu';");
out.write("</script>");
}
}
}
實作修改功能,同樣通過get請求向服務器發送url獲得id等其他資訊,同時學號不能編輯
//學號不可編輯
readonly unselectable='on'
package com.beizhen.servlet;
import com.beizhen.bean.Student;
import com.beizhen.dao.StudentDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author : Bei-Zhen
* @date : 2020-10-06 16:35
*/
@WebServlet("/updstu")
public class UpdStuServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//獲取請求引數
int sId = Integer.parseInt(request.getParameter("sId"));
String sNum = request.getParameter("sNum");
String sSchool = request.getParameter("sSchool");
String sName = request.getParameter("sName");
String sNickname = request.getParameter("sNickname");
String sTel = request.getParameter("sTel");
String sBDay = request.getParameter("sBDay");
Student stu = new Student(sId,sNum,sSchool,sName,sNickname,sTel,sBDay);
int i = new StudentDao().updateStu(stu);
PrintWriter out = response.getWriter();
if(i != 0){
out.write("<script type='text/javascript'>");
out.write("alert('恭喜你修改成功!');");
out.write("window.location='selstu';");
out.write("</script>");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//列印流
PrintWriter out = response.getWriter();
out.write("<html><body>");
out.write("<form action='updstu' method='post'>");
//學號不可編輯
out.write("ID:<input type='text' name='sId' readonly unselectable='on' value='" + request.getParameter("sId") + "'><br>");
out.write("學號:<input type='text' name='sNum' readonly unselectable='on' value='" + request.getParameter("sNum") + "'><br>");
out.write("學校:<input type='text' name='sSchool' value='" + request.getParameter("sSchool") + "'><br>");
out.write("姓名:<input type='text' name='sName' readonly unselectable='on' value='" + request.getParameter("sName")+ "' required><br>");
out.write("昵稱:<input type='text' name='sNickname' value='" + request.getParameter("sNName") + "'><br>");
out.write("電話:<input type='text' name='sTel' value='" + request.getParameter("sTel") + "'><br>");
out.write("生日:<input type='text' name='sBDay' value='" + request.getParameter("sBDay") + "'><br>");
out.write("<button type='submit'>修改</button>");
out.write("</form><html><body>");
}
}
實作查詢功能,根據名字查詢
package com.beizhen.servlet;
import com.beizhen.bean.Student;
import com.beizhen.dao.StudentDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
/**
* @author : Bei-Zhen
* @date : 2020-10-06 22:30
*/
@WebServlet("/selstuat")
public class SelStuAtServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設定請求和回應編碼
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//獲得學生請求資訊
String sName = request.getParameter("sName");
//獲得資料庫所有學生資訊
StudentDao studao = new StudentDao();
List<Student> stus = studao.queryAllStus(sName);
//打印流
PrintWriter out = response.getWriter();
out.write("<html><body><h1 align='center'>學生資訊管理系統</h1>" +
"<div align='center'><form action='selstuat' method='get'>" +
"<input type='text' name='sName'>" +
"<button type='submit'>查詢</button></form></div>" +
"<table border='1' cellspacing='0' cellpadding='10' align='center'>");
out.write("<tr><td>"+"學生編號"
+"</td><td>"+"學號"
+"</td><td>"+"學校"
+"</td><td>"+"姓名"
+"</td><td>"+"昵稱"
+"</td><td>"+"手機號"
+"</td><td>"+"生日"
+"</td><td>"+"添加操作"
+"</td><td>"+"洗掉操作"
+"</td><td>"+"修改操作"
+"</td></tr>");
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
out.write("<tr><td>"+stu.getsId()
+"</td><td>"+stu.getsNum()
+"</td><td>"+stu.getsSchool()
+"</td><td>"+stu.getsName()
+"</td><td>"+stu.getsNickname()
+"</td><td>"+stu.getsTel()
+"</td><td>"+stu.getsBDay()
+"</td><td>"+"<a href='register.jsp' style='text-decoration:none'>添加</a>"
+"</td><td>"+"<a href='/delstu?id=" +stu.getsId() + "' style='text-decoration:none'>洗掉</a>"
+"</td><td>"+"<a href='/updstu?sId=" +stu.getsId() + "&sNum=" + stu.getsNum()
+ "&sSchool=" + stu.getsSchool() + "&sName=" + stu.getsName()
+ "&sNName=" + stu.getsNickname() + "&sTel=" + stu.getsTel()
+ "&sBDay=" + stu.getsBDay() + "' style='text-decoration:none'>修改</a>"
+"</td></tr>");
}
out.write("</table></body></html>");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/163729.html
標籤:python
上一篇:【途牛旅游專案】01 - 專案環境準備,實作登錄功能
下一篇:Java日常學習之集合
