第一个简单的servlet
----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>a1</servlet-name>
<servlet-class>cloud.windinfo.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>a1</servlet-name>
<url-pattern>/mytest</url-pattern>
</servlet-mapping>
</web-app>
----myweb.html----
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>myhtml</title>
</head>
<body>
<h1>这是我的html</h1>
<a href="mytest">test</a>
<form action="mytest" method="post" >
<input type="submit" value="posttest">
</form>
</body>
</html>
----ServletTest.java----
package cloud.windinfo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author: WindInForest
* @Description:
* @Date Created in 2021-09-11 23:06
* @Modified By:
*/
public class ServletTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是GET");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是POST");
}
}
servlet生命周期:
处理请求
HttpServletRequest 接口
getParameter和getAttribute区别
两者区别:
①getParameter()获取的是客户端设置的数据。
getAttribute()获取的是服务器设置的数据。
②getParameter()永远返回字符串
getAttribute()返回值是任意类型
既然parameter和attribute都是传递参数,为什么不直接使用parameter呢?
①服务器端不能通过setParameter(key, value)来添加参数,因为没有这个函数
所以如果需要在服务器端进行跳转,并需要想下个页面发送新的参数时,则没法实现。但是Attribute可以,可以通过setAttribute(),将值放入到request对象,然后在其他页面使用getAttribute获取对应的值,这样就达到一次请求可以在多个页面共享一些对象信息
②parameter返回值是字符串,意味着不能传递其他的对象,如Map,List,但是attribute则可以存放任意类型的Java对象
HttpServletRespones接口
会话 session
获得初始化参数
(1)web.xml中先定义初始化参数
局部初始化参数:
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
全局初始化参数:
<context-param>
<param-name>bianma</param-name>
<param-value>utf-8</param-value>
</context-param>
(2)servlet中获得初始化参数,重写init()⽅法
encoding= config.getInitParameter("encoding"); //局部
bianhao=config.getServletContext().getInitParameter("bianma"); //全局
通过注解方式获取初始化参数:
@WebServlet(name = "myUserServlet",
urlPatterns = "/user/test", //斜杠必须
loadOnStartup = 1,
initParams = {
@WebInitParam(name="name", value="⼩明"),
@WebInitParam(name="pwd", value="123456")
}
)