servlet与jsp交互样例

servlet与jsp交互样例

首次书写servlet程序进行前后端交互的笔记,以下代码(有删减)来自同一个工程
IDE环境:IDEA2021.2.1

servlet程序样例如下:

//java.servlet.ServletAction
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class ServletAction extends HttpServlet
{
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    }
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    }
}

注意:

  • 程序入口为service(),在service()中可以手动设置程序逻辑来调用doPost()doGet()
  • 若没有service(),则根据前端调用的方法来挑选doPost()doGet()

servlet文件在web.xml中的配置样例如下:

​ servlet所在位置:

结构

xml代码:

<servlet>
    <servlet-name>ServletAction</servlet-name>
    <servlet-class>servlet.ServletAction</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ServletAction</servlet-name>
    <url-pattern>/servlet_action</url-pattern>
</servlet-mapping>

注意:

  • servlet-name可以随便写
  • servlet-class在src root(src root可能需要额外配置)下(图中是蓝色的文件——java)
  • url-pattern可以理解为url地址栏上输入的信息,通过前端的url-pattern映射到servlet-class便可以做到前后端的交互。经笔者这边的测验:在url-pattern中必须要加上/,否则编译器(IDEA2021.2.1)会报错。

前端jsp调用servlet样例代码:

<form action="servlet_action" method="post">
    <input type="submit" value="调用servlet">
</form>

注意:

  • jsp文件一般要在行首加上:

    <% page contentType="text/html; charset=UTF-8" language="java" %>
    
  • 在以上代码中action="servlet_action"如果写成action="/servlet_action",那么在浏览器中的访问就会由http://localhost:8080/lab1_01_war_exploded/ 变为http://localhost:8080/servlet_action,从而导致404错误(访问不到文件)。同样地,如果写成action="servlet_action/",那么访问到的是http://localhost:8080/lab1_01_war_exploded/servlet_action/,同样会404(访问不到文件)

这里有一个疑问:当我直接运行项目时url=http://localhost:8080/lab1_01_war_exploded/,此时可以正常显示,说明以/结尾在某种情况下是可以的,但是具体情况不知道。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值