Java Web的三种获取参数的方法

目录

从web.xml文件中获取默认参数

从浏览器的网址界面获取界面参数

继承servlet接口的方法从浏览器的网址界面获取界面参数

继承HttpServlet接口的方法从浏览器的网址界面获取界面参数

从网页表单中获取表单参数

继承Httpservlet中的doPost和doGet各自的作用


从web.xml文件中获取默认参数

首先需要在xml文件中定义和声明,在servlet下的init-parm下的parm-name写入参数名字,parm-value写入参数的值

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
<!--    创建一个servlet实例,类似java中的new-->
    <servlet>
        <servlet-name>MyServlet01</servlet-name>
        <servlet-class>com.zpark.servlet.MyServlet01</servlet-class>

        <init-param>
            <param-name>name</param-name>
            <param-value>Lungcen</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>110120130</param-value>
        </init-param>
    </servlet>
<!--    配置访问的规则-->
    <servlet-mapping>
        <servlet-name>MyServlet01</servlet-name>
        <url-pattern>/Lun.do</url-pattern>
<!--        .do是针对jsp来的,以.do来访问servlet-->
    </servlet-mapping>
</web-app>

除了web.xml内声明了参数,还要在servlet中利用变量接收参数,再发送到浏览器中显示出来。

package com.zpark.servlet;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class MyServlet01 implements Servlet {
    private String name;
    private String password;
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        //获得配置文件中的参数,用一个枚举结构来接收
        Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
        while(initParameterNames.hasMoreElements())
        {
            String tump = initParameterNames.nextElement();
            if ("name".equals(tump))
                name = servletConfig.getInitParameter(tump);
            if ("password".equals(tump))
                password = servletConfig.getInitParameter(tump);
        }
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse)
            throws ServletException, IOException {
        //每次请求,都会调用一次 service() 方法,设置字符集
        servletResponse.setContentType("text/html;charset=UTF-8");
        //使用PrintWriter.write()方法向前台页面输出内容
        PrintWriter writer = servletResponse.getWriter();
        writer.write("学习servlet,开启新征程 <br />");
        writer.write("name ->" + name + "<br />");
        writer.write("password ->" + password);
        writer.close();
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

从浏览器的网址界面获取界面参数

继承servlet接口的方法从浏览器的网址界面获取界面参数

package com.zpark.servlet;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class MyServlet01 implements Servlet {
//    继承servlet的方法不是很常用

    private String IU_name;
    private String IU_password;

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        //获得配置文件中的参数,用一个枚举结构来接收
        Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
        while(initParameterNames.hasMoreElements())
        {
            String tump = initParameterNames.nextElement();
            if ("name".equals(tump))
                IU_name = servletConfig.getInitParameter(tump);
            if ("password".equals(tump))
                IU_password = servletConfig.getInitParameter(tump);
        }
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse)
            throws ServletException, IOException {

        //向下转型
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        //设置请求编码
        httpServletRequest.setCharacterEncoding("utf-8");

        String name;
        String password;
        String name_hsr = httpServletRequest.getParameter("name");

        if(name_hsr != null && !"".equals(name_hsr) && !"null".equals(name_hsr) )
            name = httpServletRequest.getParameter("name");
        else
            name = IU_name;

        String password_hsr = httpServletRequest.getParameter("password");

        if(password_hsr != null && !"".equals(password_hsr) && !"null".equals(password_hsr) )
            password = httpServletRequest.getParameter("password");
        else
            password = IU_password;

        //设置下响应字符集编码
        servletResponse.setContentType("text/html;charset=UTF-8");
        //使用PrintWriter.write()方法向前台页面输出内容
        PrintWriter writer = servletResponse.getWriter();
        writer.write("学习servlet,开启新征程 <br />");
        writer.write("name ->" + name + "<br />");
        writer.write("password ->" + password);
        writer.close();
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
    }
}

继承HttpServlet接口的方法从浏览器的网址界面获取界面参数

package com.zpark.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
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.Enumeration;

//这个类似于再web.xml文件的配置的访问路径和参数的对象和值
@WebServlet(value = {"/ms4.do", "/ms5.do"},
        initParams = {@WebInitParam(name = "name", value = "默认姓名(赵三)"),
                @WebInitParam(name = "password", value = "默认密码(110120130)")}
)
public class MyServlet4 extends HttpServlet {
    private String IU_name = "";
    private String IU_password = "";
    @Override
    public void init(ServletConfig config) throws ServletException {
        Enumeration<String> ParameterNames = config.getInitParameterNames();
        while (ParameterNames.hasMoreElements())
        {
            //如果还存在元素,就拿出元素
            String temp = ParameterNames.nextElement();
            if ("name".equals(temp))
                IU_name = config.getInitParameter(temp);
            if ("password".equals(temp))
                IU_password = config.getInitParameter(temp);
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name;
        String password;
        //设置响应对象的编码字符集
        resp.setContentType("text/html;charset=utf-8");
        //设置请求对象的编码字符集
        resp.setCharacterEncoding("UTF-8");
        //输出信息
        PrintWriter writer = resp.getWriter();
        String um = req.getParameter("name");
        String hsr = req.getParameter("password");
        if ( um != null && !"".equals(um) && !"null".equals(um) )
            name = um;
        else
            name = IU_name;
        if ( hsr != null && !"".equals(hsr) && !"null".equals(hsr) )
            password = hsr;
        else
            password = IU_password;
        writer.write("username:" + name);
        writer.write("<br/>");
        writer.write("password:" + password);
        writer.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //设置请求编码
        req.setCharacterEncoding("utf-8");
        this.doGet(req, resp);
    }
}

从网页表单中获取表单参数

继承Httpservlet中的doPost和doGet各自的作用

doPost是接收请求,请求是由<form>表单标签来发送请求。

doGet是接收响应,响应给浏览器,所以再浏览器网址回车的时候,会调用diGet然后响应给浏览器。

<%--    method可以选择是post还是get,但是我们一般是post请求--%>
<form action="/uned_war/ms3.do" method="post">
        用户:<input type="text" name="username" />
        密码:<input type="password" name="password" />
        <input type="submit" value="提交">
</form>

在jsp文件中写入表单,然后再浏览器的表单输入参数

在servlet中接收参数然后再响应到浏览器

<%@page language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>ti mu</title>
</head>
<body>
    <form action="/unwar/ms3.do" method="post">
        用户:<input type="text" name="username" />
        密码:<input type="password" name="password" />
        <input type="submit" value="提交">
    </form>
</body>
</html>
package com.zpark.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 MyServlet3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //获取界面的内容
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //设置响应对象的编码字符集
        resp.setContentType("text/html;charset=utf-8");
        //输出信息
        PrintWriter writer = resp.getWriter();
        writer.write("Hello world" + "<br/>");
        writer.write("username ->" + username + "<br/>");
        writer.write("password ->" + password + "<br/>");
        writer.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //设置请求编码
        req.setCharacterEncoding("UTF-8");
        doGet(req, resp);
    }
}

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lungcen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值