Servlet技术-控制层
(一)项目分层结构3层
前台 | 后台 | 底层 |
---|---|---|
浏览器 | web服务器 | 数据库服务器 |
谷歌浏览器 | Tomcat服务器 | Mysql服务器 |
Java语言 | Mysql(SQL) | |
JDBC技术 | Mysql(SQL) |
(二)项目分层结构4层
前台 | 控制层 | 数据层 | 底层 |
---|---|---|---|
web前台 | web后台 | ||
视图层 | 控制层 | 数据层 | 底层 |
Java语言 | Java语言 | Java语言 | Mysql(SQL) |
JSP技术 | Servlet技术 | JDBC技术 | Mysql(SQL) |
(三)web开发基本操作
Tomcat简介:是java语言编写的后台开源Web服务器。
(1)把tomcat服务器解压到d盘下
(2)创建Server服务器工程关联tomcat服务器
(3)创建web工程
(4)在WebContent下新建jsp页面(设置JSP编码:UTF-8)
(5)把web工程发布到tomcat服务器中
(6)启动tomcat服务器
(7)访问jsp页面(http://127.0.0.1:8080/web0420/a.jsp)
(8)停止tomcat服务器
(四)Servlet技术
前台 | 后台 |
---|---|
视图层 | 控制层 |
谷歌浏览器 | Tomcat服务器 |
Servlet技术(Java) |
JDBC技术:是Java数据层核心技术API【用来和底层进行交互】。
Servlet技术:是Java控制层核心技术API【用来和前台进行交互】。
(1)创建包com.cuiyudong.controller
(2)创建控制器Action01 extends HttpServlet
(3)生成方法(Servlet的生命周期)
注意:控制器中的方法是tomcat来调用而不是我们。
Servlet控制器的生命周期分为3个阶段
第一阶段:初始化阶段:init
当请求第一次达到的时候被调用。只调用一次。
第二阶段:业务阶段:service(最重要,真正执行处理请求的方法)
当请求达到的时候被调用。调用多次。
第三阶段:销毁阶段:destroy
当服务器停止的时候被调用。只调用一次。
package com.zhaoyang.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 控制器:控制层的类
public class Action01 extends HttpServlet {
public void init() throws ServletException {
System.out.println("第一阶段:初始化方法,当请求第一次达到的时候被调用。只调用一次");
}
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("第二阶段:业务处理方法,当请求达到的时候被调用。调用多次");
}
public void destroy() {
System.out.println("第三阶段:销毁方法,当服务器停止的时候被调用。只调用一次");
}
}
(4)在web.xml文件中配置控制器
<servlet>
<servlet-name>Action01</servlet-name>
<servlet-class>com.zhaoyang.controller.Action01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Action01</servlet-name>
<url-pattern>/Action01</url-pattern>
</servlet-mapping>
1、url:统一资源定位系统,用于指定信息位置的表示方法。表示访问后台的路径,在这里用路径/Action01来访问控制器,这个路径名字可以随便起,也可以用/x表示,但是一定要有“/”;
2、同时,后台会根据/Action01(或者/x)找到它匹配的路径Action01,这个Action01也是随便起,比如z.由于/Action01(或者/x)和Action01(或者z)是一组,所以后台会通过/Action01(或者/x)找到Action01(或者z);/
3、找到了Action01,顺着Action01找到了最上面的Action01(<servlet-name>Action01</servlet-name>),这两个名字必须一样;
最后找到“com.zhaoyang.controller.Action01”,即“com.zhaoyang.controller”这个包下的类“Action01”
(5)打开浏览器访问控制器
http://127.0.0.1:8080/web0420/x
注意:web.xml修改后必须重启tomcat才会生效。
(五)JSP技术 + Servlet技术综合案例(登陆模块)
登陆页面 | 登陆控制器 | 成功页面 |
---|---|---|
a.jsp | LoginAction.java | b.jsp |
(1)登陆页面a.jsp
<h1>登录页面</h1> //标题
<form action="/web0420/g" method="post">//form是表单,action是后台路径
用户<input name ="t1" type="text"><br>//用户名、文本框
密码<input name ="t2" type="password"><br>//用户名、密码框
<input type="submit" value="登录">//登录提交按钮
</form>
(2)成功页面b.jsp
<h1>登录成功</h1>
(3)编写登陆控制器LoginAction.java
package com.zhaoyang.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginAction extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// (1)获取用户和密码,t1是用户名,t2是密码
String t1 = req.getParameter("t1");
String t2 = req.getParameter("t2");
// (2)验证账号是否合法、并设置跳转的路径
String path;
if (t1.equals("abc") && t2.equals("123")) {
path = "b.jsp";
} else {
path = "a.jsp";
}
// (3)跳转页面
resp.sendRedirect(path);
}
}
(4)配置web.xml
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.cuiyudong.controller.LoginAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
(5)编写登陆页面表单中的action属性
<h1>登录页面</h1> //标题
<form action="/web0420/Login" method="post">//form是表单,action是后台路径
用户<input name ="t1" type="text"><br>//用户名、文本框
密码<input name ="t2" type="password"><br>//用户名、密码框
<input type="submit" value="登录">//登录提交按钮
</form>