设为首页 加入收藏

TOP

Java后端01(初识servlet)(一)
2023-07-26 08:17:31 】 浏览:132
Tags:Java 后端 初识 servlet

servlet

添加依赖坐标(maven)

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
</dependency>

小测试

? 所有请求都会固定携带一个参数(method)代表请求的方式(GET,POST,PUT,DELETE,OPTION)

public class HelloServlet extends HttpServlet {
    @Override
    // req 对应的是请求对象,代表的是请求
    // resp 对应的是响应对象,代表的是响应
    // Java依然按照面向对象的设计方式,开发者如果想操作请求和响应,只需要使用对应的对象调用方法即可,对象实例化也是由 tomcat 自行完成
    
    // 此方法表示处理的是 get 请求,如果发送的 post 请求,那么网页就会报错405
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 通过响应对象,设置响应内容
        // 准备响应内容
        String content = "This is a text content!";
        // 获取响应对应的输出流,和 socket 变成的流的获取类似
        PrintWriter printWriter = resp.getWriter();
        // 将数据读取到输出流中
        printWriter.write(content);
        // 当doGet方法运行完成之后,响应会被 tomcat 自动返回给客户端
    }
}

// 在 web.xml 文件中配置路由
<servlet>
	<servlet-name>HelloServlet</servlet-name>
	<servlet-class>com.iweb.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>HelloServlet</servlet-name>
	<url-pattern>/hello</url-pattern>
</servlet-mapping>

一个post请求的全流程

<!--页面代码-->
<body>
<!--action:点击提交按钮的时候所发送的请求路径-->
<!--method:请求方式,如果不写默认get-->
    <form action="login" method="post">
      用户名:<input type="text" name="username"><br>
      密码:<input type="password" name="password"><br>
      <input type="submit" value="提交">
    </form>
</body>
// 服务端代码
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 中文处理:在请求的参数接受之前,设置请求中的参数的字符串
        req.setCharacterEncoding("UTF-8");
        // 借助请求对象,获取form表单中所对应的参数
        // getParameter对应的参数,是form表单中input所对应的name属性
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // req.getParameterValues("name") 获取多个值
        System.out.println(username + " : " + password);
        String html = "";
        if("admin".equals(username)&& "123".equals(password)){
            html = "<div style='color:red'>login success!</div>";
        }else{
            html = "<div style='color:green'>login failed!</div>";
        }
        // 在响应返回之前,设置响应中的内容类型和指定字符集编码
        // 1. 在Java层面将想用中的字符设置为UTF-8编码
        // 2. 通知浏览器使用UTF-8编码显示数据
        resp.setContentType("text/html;charset=UTF-8");
        // 响应返回
        resp.getWriter().write(html);
    }
}
<!--web.xml-->
<servlet>
	<servlet-name>LoginServlet</servlet-name>
	<servlet-class>com.iweb.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>LoginServlet</servlet-name>
	<url-pattern>/login</url-pattern>
</servlet-mapping>

Get请求的几种情况

  1. 浏览器地址栏输入地址访问
  2. 通过超链接点击发送的请求方式
  3. form表单的默认提交方式
  4. ajax指定get方式发送的请求

Post请求方式

  1. form表单指定post方式提交
  2. ajax指定post方式发送请求

POST 和 GET 的区别

  1. get 请求匹配 doGet 方法,post请求匹配 doPost 方法
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇面试官:try-catch 到底写在循环.. 下一篇一次服务启动慢问题排查

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目