经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

首先介绍MVC:

M:model层,实现系统的业务逻辑,即javaBean

V:view层,负责与用户交互,即在界面展示,比如html,jsp

C:control层,是model层与View层之间的桥梁,它可介绍来自view层传来的请求分发给model层,然后再接收model的返回数据并选择恰当的视图给view层,让用户看到。

在别人的博客上copy了张图,很形象啊!

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

上图很形象的说明了servlet的MVC模式的运行原理。浏览器发送请求到jsp,所有的请求都会给servlet来处理,servlet通过对javaBean,即核心的model处理,得到处理结果,在返回给view层的jsp页面,jsp页面返回给浏览器最后的html网页。

其次,从图中可以看出model层关联前端和后台,是servlet的核心部分。

下面,用eclipse建一个最简单的servlet模式工程。

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

在eclipse的javaEE开发视图模式下,找到Project explorer 框,如上图,右键new–>选择Dynamic Web Project(动态web工程):

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

填写工程名,版本选2.5  ,tomcat选5,或6都行。别太低。Next–》

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

然后下一步,再出现一个视图,再直接finish就行了。

建好之后就有以下界面:

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

eclipse会给我们建好需要的文件夹,想webContent就是知道本地web工程的根文件夹。

完了之后,打开web-inf下的web.xml:

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

看上图的xml文件,标签<welcom-file-list>的意思是“欢迎文件集合‘想当与一个工程的首页,当启动工程后会进入到统一的Servlet,负责统一的中转,正如本文图一所示,首先找到<welcom-file-list>下的文件,到前端显示,这里在上上图中可以看到,小编在WebContent目录下建了一个index.jsp页面,在<body>标签中写了个success。这里注意的是,如果在index中输入中文字符,保存时会显示是否保存为utf-8格式。这里呢,先选择取消,然后在jsp文件中修改:

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

将所有的charset的字符设置成utf-8格式,保存,最后启动tomcat。

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

在流量器中输入:http://localhost:8080/Servlet/

会有:经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

这样一个简单的Servlet模式的工程就建好了。

接下来如果想更深一步的了解mvc工资模式可以看如下:

在index.jsp中增加了两个链接,上面是直接跳转。下面要通过servlet控制器分发。

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

这个是跳转后的second.jsp页面

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

启动工程后,在页面点击index的第二个链接,进入到servlet分发器的xml中,找到first,进入到Servlet.First这个类。

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

在下图的First类中,转发到second.jsp页面。

经典Servlet+JSP+JavaBean开发模式(MVC)原理与创建工程

代码部分:

package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class First extends HttpServlet{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	ServletContext servletContext = getServletContext();
	RequestDispatcher dispatcher = servletContext.//直接转发到second页面
			getRequestDispatcher("/second.jsp");
	dispatcher.forward(request, response);
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106310.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ipad分屏功能怎么使用_es6 reflect

    ipad分屏功能怎么使用_es6 reflectpadStart方法使用说明jspadStart是什么padStart()方法用另一个字符串填充当前字符串(如果需要的话,会重复多次),以便产生的字符串达到给定的长度。从当前字符串的左侧开始填充。实例’abc’.padStart(10);//”abc”‘abc’.padStart(10,”foo”);//”foofoofabc”‘abc’.padStart(6,”123465″);//”123abc”‘abc’.padStart(8,”0″)

  • c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法

    c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法ExecuteNonQuery方法ExecuteNonQuery方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句。该方法返回值意义如下:对于Update、Insert和Delete语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下:(1)创建数…

  • 关于各种型号单片机delay函数不起作用问题的解决方法

    关于各种型号单片机delay函数不起作用问题的解决方法这里以单片机HT45F75为例://定义一个延时xms毫秒的延时函数voiddelay(unsignedintxms) //xms代表需要延时的毫秒数{   unsignedintx,y;   for(x=xms;x&gt;0;x–)           for(y=960/4;y&gt;0;y–)           {                     …

  • KDD2018《Adversarial Attacks on Neural Networks for Graph Data》 论文详解「建议收藏」

    KDD2018《Adversarial Attacks on Neural Networks for Graph Data》 论文详解「建议收藏」论文链接:https://arxiv.org/pdf/1805.07984.pdfAbstract本文介绍了第一个在属性图上进行对抗攻击的研究,特别关注利用图卷积的思想模型。除了在测试阶段进行攻击,本文进行了更具挑战的poisoningattack(聚焦于机器学习模型的训练阶段)类别。在考虑实例间依赖关系的情况下,针对节点特征和图结构进行对抗扰动(adversarialperturbation)。通过保证重要的数据特征保证扰动是不可见的(unnoticeable)。为了解决底层的离散域(disc

  • Flowable工作流入门

    Flowable工作流入门Flowable工作流入门本文链接:https://blog.csdn.net/qq_37059838/article/details/83576097原作者:吕小小布下载地址:Flowable下载使用springbootflowble生成所需表<dependency><groupId>org.flowable</gro…

  • ES6 类的使用(class)

    ES6 类的使用(class)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号