一、Servlet
1.简介Servlet
Servlet是使用Java语言编写的程序,它运行在Web服务器上,用以处理来自客户端的请求,完成用户与服务器的交互。它一般会把会把处理的结果以HTML的形式返回,在客户端形成动态网页。Servlet广义上来讲指的是servlet接口,狭义上来讲指的是所有实现接口的实现类。
2.Servlet的优点
(1)Servlet运行在Web服务器中,可以使Java动态处理服务器的一些内容,扩展服务器的功能,完成如注册、登录等功能。
(2)同时Servlet还可以与其他资源进行交互,返回客户端相应的内容,形成动态网页。
(3)由于Servlet是Java编写,它可以发挥Java中所有的优点,如跨平台性。
3.Servlet与Tomcat的关系
Servlet是Tomcat的一个组件。Servlet的功能需要依赖一个servlet-api.jar,这个包是由tomcat提供的。Tomcat在初始化Servlet时,首先读取web.xml文件,根据web.xml文件中的参数信息初始化ServletConfig、ServletContext对象,同时帮助我们创建HttpServletRequestHttpServletResponse对象一并交给Servlet实例,此时,Servlet就具有了相关的功能。
4.Servlet的具体实现
(1)创建一个web项目,然后新建一个类ServletTest实现此接口
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ServletTest implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("初始化:init");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("hello world!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁:destory");
}
}
(2)在web.xml中配置servlet的映射信息,只有配置了映射信息,tomcat才能找到客户端的请求对应的是哪个servlet
<webapp>
<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
<!-- servlet的内部名称,自定义。尽量有意义 -->
<servlet-name>MyServlet</servlet-name>
<!-- servlet的类全名: 包名+简单类名 -->
<servlet-class>cn.roobtyan.servlet.FirstServlet</servlet-class>
<init-param>
<param-name>first</param-name>
<param-value>第一个初始化参数</param-value>
</init-param>
<init-param>
<param-name>second</param-name>
<param-value>第二个初始化参数</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
<servlet-name>ServletTest</servlet-name>
<!-- servlet的映射路径(访问servlet的名称),"/"斜杠不能省略-->
<url-pattern>/s1</url-pattern>
</servlet-mapping>
</webapp>
(3)重写doGet和doPost方法。
public class ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("hello world");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("hello world");
doGet(req,resp);
}
}
5.Servlet的生命周期
一般来讲,servlet只会初始化一次,也就是整个过程中只存在一个servlet对象,即便是有多次访问,依然只有一个对象,这个对象是可以复用的,所以servlet是单实例多线程的。
其中init(),service(),destroy()比较关键,体现了Servlet的生命周期。
(1)init方法只会调用一次,只是在创建servlet实例的时候才会创建.
(2)service方法,是进行数据处理的,只要接受了一次请求,就会被调用一次。
(3)destroy方法,销毁servlet对象的时候调用。停止服务器或者重新部署web应用时销毁servlet对象,同样也是调用一次。
二、MVC框架
1.什么是MVC
MVC模式(Model-view-controller)是软件工程中的一种软件架构模式,他把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。这种模式用于应用程序的分层开发。
Model(模型):模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
View(视图):视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services。MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
Controller(控制器):控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
举个例子
2.MVC优缺点:
优点:
-
开发人员可以只关注整个结构中的其中某一层;
-
可维护性高,可扩展性高
-
可以降低层与层之间的依赖;
-
有利于标准化;
-
利于各层逻辑的复用
缺点:
1.降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成
2.有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
3.增加了开发成本
三、Jar包
1.什么是Jar包
Jar包(Java ARchive )是一种基本zip 格式的文件格式。目标是将Java 生成的类文件、资源文件、管理文件等按照特定的结构打包成一个独立的文件,方便程序的发布或网络的下载。与Zip文件不同的是,Jar 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 Jar 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 Jar。
2.如何打包
然后就成功得到了一个jar文件
3.如何导包
1.创建一个lib目录
2.把需要的jar包粘贴到lib目录下
3.导包
使用的时候只需要import就可以了
写在最后:这周的知识之前完全没有接触过,学的有点懵懵的,博客内容涉及的比较浅,可能存在错误,感谢学长学姐阅读指正。