1.什么是servlet?
在Java中,Servlet是用于创建动态Web内容的服务器端组件。Servlet运行在Tomcat服务器上,可以响应客户端(通常是Web浏览器)发出的请求。Servlet的生命周期由服务器管理,主要包括初始化、请求处理和销毁三个阶段。
Servlet是一种Java类,它实现了javax.servlet.Servlet接口。Servlet主要用于处理HTTP请求和生成HTTP响应,可以用于创建动态网页、处理表单数据、管理会话等。
----等价于我们原来的处理页面------------
2.为什么使用servlet?
为了减少jsp中java代码的出现。<%%>. 因为网页适合展示html标签。如果你把java代码也放在网页中,这样就显的jsp网页比较乱。
以后再jsp中不要再出现<%%>了。
如何使用servlet
1.创建一个Servlet类并继承HttpServlet
public class MyServlet extends HttpServlet {
//重写service方法。处理客户的请求
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
2.再web.xml文件中注册servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册servlet-->
<servlet>
<!--为注册的servlet类起名称。随便起-->
<servlet-name>MyServlet</servlet-name>
<!--表示自定义的servlet类-->
<servlet-class>com.ykq.servlet.MyServlet</servlet-class>
</servlet>
<!--设置servlet的映射关系. 当请求my路径时,则映射到MyServlet类中。-->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/my</url-pattern>
</servlet-mapping>
</web-app>
3.测试
3.完成案例
通过servlet完成登录操作
修改登录页面
LoginServlet
package com.ykq.servlet;
import com.ykq.dao.UserDao;
import com.ykq.entity.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
private UserDao userDao=new UserDao();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//编码设置
request.setCharacterEncoding("utf-8");
//接受参数
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
//调用UserDao类中的方法
User user = userDao.selectByNameAndPwd(uname, pwd);
//判断是否登录成功
if(user!=null){
HttpSession session = request.getSession();
//把当前用户信息保存再session中
session.setAttribute("user",user);
response.sendRedirect("/main.jsp");
}else{
response.sendRedirect("/login.jsp");
}
}
}
4.servlet如何处理多个请求
我们不可能对每个请求设置一个servlet。而我们应该一个Servlet可以处理多个请求。 建议大家一张表对应一个servlet。 我们可以再传递参数时添加一个标识符的参数。
5.使用注解完成servlet的注册和映射
web3.0以后才有的
5.jsp+servlet+dao+el+jstl完成一个综合案例
页面中不允许出现<%%>java代码
完成登录
登录页面
UserServlet
查询所有用户并展示
main.jsp
删除操作
main.jsp
UserServlet
修改--回显数据
修改main.jsp
UserServlet
update.jsp
<%--
Created by IntelliJ IDEA.
User: ldh
Date: 2024/9/19
Time: 9:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h3>修改页面</h3>
<form action="/UserServlet?method=update" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr align="right">
<td width="100">编号:</td>
<td><input type="text" name="id" value="${requestScope.user.id}" readonly/></td>
</tr>
<tr align="right">
<td width="100">账号:</td>
<td><input type="text" name="uname" value="${user.username}"/></td>
</tr>
<tr align="right">
<td>密码:</td>
<td><input type="password" name="pwd" value="${user.password}"/></td>
</tr>
<tr align="right">
<td>姓名:</td>
<td><input type="text" name="realname" value="${user.realname}"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="立即修改"/></td>
</tr>
</table>
</form>
</body>
</html>
立即修改
UserServlet