Loading

Nosuchpgmr's Blog

博客园 首页 新随笔 联系 订阅 管理

Servlet介绍

运行在 Web 服务器或应用服务器上的程序,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

Servlet获取参数

示例:

//AddServlet.java
package com.example.javaweb01;

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 AddServlet extends HttpServlet {
    //doPost
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码,防止中文乱码
        req.setCharacterEncoding("UTF-8");
        
        String fname = req.getParameter("fname");
        String priceStr = req.getParameter("price");
        //参数均以字符串形式获取,需转换
        Integer price = Integer.parseInt(priceStr);
        String fcountStr = req.getParameter("fcount");
        Integer fcount = Integer.parseInt(fcountStr);
        String remark = req.getParameter("remark");

        System.out.println("fname: " + fname);
        System.out.println("price: " + price);
        System.out.println("fcount: " + fcount);
        System.out.println("remark: " + remark);
    }
}

页面:

<!--add.html-->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <form action="add" method="post">
        名称: <input type="text" name="fname"/>
        价格: <input type="text" name="price"/>
        库存: <input type="text" name="fcount"/>
        备注: <input typr="text" name="remark"/>
        <input type="submit" value="添加"/>
    </form>
</body>
</html>

WEB-INF:

<!--web.xml-->
<?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-name>AddServlet</servlet-name>
        <servlet-class>com.example.javaweb01.AddServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
</web-app>

执行过程:

  1. 用户发送请求,action="add"
  2. 项目中,web.xml中找到url-pattern /add(注意/符号)
  3. servlet-mapping(映射)中的servlet-name
  4. servlet中与servlet-mapping中一样的servlet-name
  5. servlet-class
  6. 用户请求method=post,执行class中的doPost
posted on 2022-05-17 20:03  nosuchpgmr  阅读(111)  评论(0)    收藏  举报