在JSP页面中加入<% %>标签就可以写Java代码。这种方法看起来很方便,实际上带来了一些问题......
当你想修正页面排版、样式时怎么办?修正JSP文件。当你想修正后台逻辑时怎么办?修正JSP文件。当你...怎么办?修正JSP文件
所有的内容都写在一个文件中,显然不利于系统的扩展和掩护。为此,我们须要将由Java处理的后台逻辑“抽出来”,单独找一块地方写后台代码,而JSP页面则专注于数据显示。
没错,这个放后台代码的地方便是——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页面,点击下方“获取信息”按钮,会创造: