servlet与jsp交互样例
servlet与jsp交互样例首次书写servlet程序进行前后端交互的笔记,以下代码(有删减)来自同一个工程IDE环境:IDEA2021.2.1servlet程序样例如下://java.servlet.ServletActionimport javax.servlet.*;import javax.servlet.http.*;import java.io.IOException;public
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)