在JSP页面中加入标签就可以写Java代码。这种方法看起来很方便,实际上带来了一些问题......
当你想修改页面排版、样式时怎么办?修改JSP文件。当你想修改后台逻辑时怎么办?修改JSP文件。当你...怎么办?修改JSP文件
所有的内容都写在一个文件中,显然不利于系统的扩展和维护。为此,我们需要将由Java处理的后台逻辑“抽出来”,单独找一块地方写后台代码,而JSP页面则专注于数据显示。
没错,这个放后台代码的地方就是——Servlet
接下来,就让我们通过一些例子来认识Servlet吧~
一、编写一个简单的页面:
1、打开上次的项目,在WebContent目录下创建新的页面文件index.jsp,并在
中添加以下内容:
当前时间:${time }
首页信息:${message }
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