目录
实现功能:
class文件
知识点:
①ServletConfig
②ServletContext
③请求参数中带中文:
④getInitParameter(参数名)
⑤请求参数的获取:
⑥字符串.trim()
⑦字符串比较函数 equals()
代码:
配置文件
知识点
①
请求1:form action中的内容
请求:括号括起来的test3
补充:请求的三种方式:
①超链接,的href中写请求名
②浏览器地址栏写url http://ip地址:端口/web应用的名称/请求名(patter-url)
③表单的中提交按钮,action中写请求名
② Web应用的包名位置
③ 数字
④注意:
⑤中的*通配符,
⑥定义初始化变量:在外
HTML文件:
实现功能:
servlet 在配置文件中设置来判断账号和密码,提交后账号和密码正确就欢迎,否则显示错误
class文件
知识点:
①ServletConfig
这是init()方法的参数,它可以获取当前servlet方方面面的信息
②ServletContext
表示整个web应用,它可以获取当前web应用方方面面的信息,我们可以通过ServletConfig对象调用getServletContext()得到该对象
ServletContext sc;
@Overridepublic void init(ServletConfig servletConfig) throws ServletException {sc = servletConfig.getServletContext();}
上述函数体 sc被赋值为web应用方方面面信息的一个集合,它的类型是ServletContext类型
③请求参数中带中文:
我们需要通过ServletRequest对象调用setCharacterEncoding("UTF-8")转码
同时再调用setContentType("text/html")设置文本页面格式
ServletRequest 和 HttpServletRequest 接口详解-CSDN博客
servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html");
④getInitParameter(参数名)
根据参数获得当前Web应用的初始化参数值
String password = sc.getInitParameter("password");
⑤请求参数的获取:
我们通过ServletRequest对象调用getparameter(参数名得到数值)
参数名是HTML中name的属性
⑥字符串.trim()
去除空格
String passwordParam = servletRequest.getParameter("password").trim();System.out.println(usernameParam);
⑦字符串比较函数 equals()
注意,把一定能取到的值,一般是初始化量.equals(),减少空指针异常
if (username.equals(usernameParam) && password.equals(passwordParam)) {
代码:
package com.iweb.test0801_b;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;public class ServletSecond implements Servlet {ServletContext sc;@Overridepublic void init(ServletConfig servletConfig) throws ServletException {sc = servletConfig.getServletContext();}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html");String username = sc.getInitParameter("username");//getInitParameter(参数名)——根据参数名获取当前servlet的初始化参数值String password = sc.getInitParameter("password");String usernameParam = servletRequest.getParameter("username").trim();String passwordParam = servletRequest.getParameter("password").trim();System.out.println(usernameParam);System.out.println(passwordParam);PrintWriter pw = servletResponse.getWriter();if (usernameParam.equals(username) && passwordParam.equals(password)) {pw.print("欢迎您" + usernameParam);} else {pw.print("账号或密码错误");}}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {System.out.println("第二个对象被销毁");}
}
配置文件
知识点
① <servlet-name>
<servlet-name>你想叫啥叫啥,就是这个Web的名字,和你Web应用的class名没关系</servlet-name>
和写在 html文件中的请求名一致
请求1:form action中的内容
<form method="post" action="second">
请求:括号括起来的test3
<a href="test3">test3</a>
补充:请求的三种方式:
①超链接,的href中写请求名
②浏览器地址栏写url http://ip地址:端口/web应用的名称/请求名(patter-url)
③表单的中提交按钮,action中写请求名
② <servlet-class>Web应用的包名位置</servlet-class>
③ <load-on-startup>数字</load-on-startup>
控制当前servlet创建和初始化的时机,当取值为非负整数时,servlet对象会在TomCat启动的过程中进创建和初始化
注意:多个servlet创建和初始化的顺序是按照取值从小到大的顺序进行的
④注意:<servlet-mapping>
一个<servlet>可以对应多个<servlet-mapping>,使得当前java接收不同的请求
⑤<url-pattern>中的*通配符,
可以接收任意请求
(1)/*
(2)/
(3)*.后缀
比方说程序运行打开网址为:http://localhost:8088/test0801_b_war_exploded/
那么打开下面代码中写的second界面可以是:http://localhost:8088/test0801_b_war_exploded/任意字母数字符号.do
也可以是: http://localhost:8088/test0801_b_war_exploded/second002
<servlet><servlet-name>second</servlet-name><servlet-class>com.iweb.ServletSecond</servlet-class><load-on-startup>0</load-on-startup>
</servlet><servlet-mapping><servlet-name>second</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><servlet-mapping><servlet-name>second</servlet-name><url-pattern>/second002</url-pattern></servlet-mapping>
⑥定义初始化变量:在<servlet>外
<context-param><param-name>username</param-name><param-value>root</param-value></context-param><context-param><param-name>password</param-name><param-value>123456</param-value></context-param>
<?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"<servlet><servlet-name>second</servlet-name><servlet-class>com.iweb.test0801_b.ServletSecond</servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>second</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping><context-param><param-name>username</param-name><param-value>root</param-value></context-param><context-param><param-name>password</param-name><param-value>123456</param-value></context-param></web-app>
HTML文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户登陆</title>
</head>
<body>、
<h3>用户登陆</h3>
<form method="post" action="hello">账号<input type="text" name="username"><br/><br/><br/>密码<input type="text" name="password"/><br/><br/><input type="submit" value="提交"/><br/>
</form>
<a href="hello?username=Tom&age=20">发起一个请求</a>
<br/>
<br/>
<a href="test3">test3</a>
<br/></body>
</html>