在JSP页面中加入<% %>标签就可以写Java代码
这种方法看起来很方便,实际上带来了一些问题......

当你想修正页面排版、样式时怎么办?修正JSP文件。
当你想修正后台逻辑时怎么办?修正JSP文件。
当你...怎么办?修正JSP文件

所有的内容都写在一个文件中,显然不利于系统的扩展和掩护。
为此,我们须要将由Java处理的后台逻辑“抽出来”,单独找一块地方写后台代码,而JSP页面则专注于数据显示。

怎么将后台代码显示在jsp上Java Web专题Servlet前后端解耦 Docker

没错,这个放后台代码的地方便是——Servlet

接下来,就让我们通过一些例子来认识Servlet吧~

一、编写一个大略的页面:

1、打开上次的项目,在WebContent目录下创建新的页面文件index.jsp,并在<body></body>中添加以下内容:

<h3>当前韶光:${time }</h3><h3>首页信息:${message }</h3><form action=\公众info\"大众 method=\公众get\公众> <input type=\公众submit\公众 value=\公众获取信息\"大众/></form>

2、保存index.jsp文件,启动做事器,用浏览器打开index.jsp文件:

看到这个页面,大家可能会一脸懵逼

代码里的${time },${message }是什么意思?实际上,这是EL表达式(形如${var }),用来显示变量的值。
那么,这个变量的浸染域是什么呢?如果没有分外解释的话,默认从page范围开始查找,接着依次查找request,session,application浸染域。
当以上浸染域都找不到该变量时,它就为空了。

接下来,我们将通过编写一个Servlet来对这两个变量进行赋值操作,并显示到页面上(我已经在底下留了一个按钮了哦

二、实现Servlet,绑天命据:

1、编写Java文件:

① 展开项眼前的Java Resources文件夹,找到src目录(我们的Java代码都要放在这个目录下),新建包servlet,在servlet包下新建类InfoServlet.java。

② 类InfoServlet继续HttpServlet类(javax.servlet.http.HttpServlet),并实现它的doGet,doPost方法。

(tips:在Eclipse中,同时按住alt+shift+s,在弹出的菜单中选择Override/Implement Methods,勾选doGet和doPost方法,单击ok即可快速实现父类的方法)

如图所示,将这两个方法的默认实现super.doGet/doPost()删去,在doPost中把要求转到doGet()方法:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp);}

在doGet()方法中实现我们的业务逻辑:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding(\"大众utf-8\"大众); SimpleDateFormat sdf = new SimpleDateFormat(\"大众yyyy-MM-dd HH:mm:ss\"大众); req.setAttribute(\"大众time\"大众, sdf.format(new Date())); req.setAttribute(\"大众message\公众, \公众Hello world\公众); req.getRequestDispatcher(\"大众index.jsp\公众).forward(req, resp);}

(这里,大家要把稳一下导包的问题:Date类要导入java.util.Date,不要导入java.sql.Date

2、建立前后端之间的映射

显然,我们想通过前端来调用这个Servlet供应做事。
在前面的JSP文件中,我们配置的地址是这样子的:

<form action=\"大众info\"大众 method=\"大众get\"大众>

我们将向做事器发送get要求,地址为info。
以是,我们须要把这个要乞降刚才写的InfoServlet类对应起来

,这里我们须要配置一下xml文件。

打开项目WebContent目录下的WEB-INF目录,双击web.xml文件,点击Source按钮进入源代码界面:

(想当年师兄在这一步卡了良久呢

在代码界面,<web-app></web-app>标签内插入以下代码:

<servlet> <servlet-name>info</servlet-name> <servlet-class>servlet.InfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>info</servlet-name> <url-pattern>/info</url-pattern> </servlet-mapping>

web.xml文件保存成功后,重启做事器(对Tomcat单击鼠标右键,选择restart)

做事看重启成功后,连续访问刚才的index.jsp页面,点击下方“获取信息”按钮,会创造: