提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
作为小菜的预习笔记~
Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序
step1:继承HttpServlet
step2:重写doGet()或者doPost()方法
step3:在web.xml中注册Servlet
//index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>第一个Servlet小例子</h1>
<hr>
<a href="servlet/HelloServlet">Get方式请求HelloServlet</a>//超链接就是get类
</body>
</html>
//HelloServlet.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承于HttpServlet
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get()请求");
PrintWriter out=response.getWriter();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
//web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ServletDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
在下列时刻Servlet容器装载Servlet:
1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的之间添加如下代码:1数字越小表示优先级越高
2,在Servlet容器启动后,客户首次向Servlet发送请求
3,Servlet类文件被更新后,重新装载Servlet
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次
Servlet容器启动时自动装载某些Servlet:
<servlet>
...
<loadon-startup>1</loadon-startup>
<servlet>
记录一下本小菜对视频的小菜感受
userinfo.jsp和reg.jsp
Users.java和RegServlet.java
web.xml
感觉自己对它们之间的关联还有点懵呢
绝对路径:放之四海而皆准的路径
相对路径:相对于当前资源的路径
<!-- /servlet/HelloServlet 第一个/表示服务器的根目录-->
<a hreaf="servlet/HelloServlet">访问HelloServlet!</a><br>//使用相对路径访问HelloServlet
<a href="<%=path%>/servlet/HelloServlet">访问HelloServlet!</a><br>//使用绝对路径访问HelloServlet,利用jsp定义的path变量(当前上下文的变量,项目的根目录)
<!--表单中action的URL地址写法,于超链接方式完全相同。-->
注意:web.xml–(url-pattern)–里面的路径也不要写错了,以/(表示的是项目的根目录)开头(若servlet前不加/,服务器启动的时候就报错)
//请求重定向方式跳转到test.jsp
response.sendReadirect("test.jsp");//不对
//使用request.getContextPath获得上下文对象
response.sendRequestDispather(request.getContextPath()+"/test.jsp");
//服务器内部跳转
request.getRequestDispatcher("test.jsp").forward(request,response);//也不对
//要在text.jsp前面加个斜线/(这里的斜线表示项目的根目录)或者加个../(点点表示回到上层目录)
Model1模型出现前,整个Web应用的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。
弊端:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性非常差。
Javabean的出现可以使jsp页面中使用Javabean封装的数据或者调用Javabean的业务逻辑代码,这样大大提升了程序的可维护性。
JSP+Javabean的开发模式
在web.xml中配置Servlet时,可以配置一些初始化参数(.xml中)。而在Servlet中可以通过ServletConfig接口提供的方法来取得这些参数
<servlet>
<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
public void init() throws ServletException{
this.setUsername(this.getInitParameter("username"));
this.setPassword(this.getInitParameter("password"));
}
MVC模式:MVC(Model,View,Controller),是软件开发过程中比较流行的设计思想。旨在分离模型,控制,视图。是一种分层思想的体现
通俗来讲,MVC的理念就是
把数据处理,数据展示(界面)和程序/用户的交互三者分离的一种编程模式
Java Web的Model2开发模型就是M(JavaBean) V(JSP) C(Servlet)思想的体现
视图Veiw:负责页面的显示,与用户的交互,包含各种表单(html/css/jsp/js)。用户交互:用户鼠标点击页面;填写页面中各种表单
模型Model:模型负责各个功能的实现(登录,增加,删除功能)。模型用JavaBean实现
控制器Controller:控制器负责将视图与模型一一对应起来。相当于一个模型分发器。所谓分发就是:①接收请求,并将该请求跳转(转发,重定向)到模型进行处理。②模型处理完毕后,再通过控制器,返回给视图中的请求处(Servlet)
这里引用了一下原博客
三层架构分为:表现层(UI)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)
1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。
·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。
2.数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作
·DAL就是根据业务需求,构造SQL语句,构造参数,调用帮助类,获取结果,DAL层被BIL层调用
3.业务逻辑层(BLL)
·BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。