servlet

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

posted on 2024-12-21 14:49  小木不痞  阅读(41)  评论(0)    收藏  举报

导航