Web的类型,即网页的类型
静态Web
- 提供行所有人看的数据,并且始终不发生变化;
- 无法和数据库交互(数据无法持久化,用户无法交互);
- html;css
动态Web
- 提供行所有人看的数据,并且始终发生变化;
- 在Java中,动态 Web资源开发的技术统称为JavaWeb;
- Servlet /JSP、ASP、PHP
Servlet
定义
Servlet是一种用于Java编写的服务器端程序,具有独立与平台和协议的特性,交互式浏览和生成数据,生成动态Web内容。Web应用程席编写完毕后,若想提供给外界访问,需要一个服务器(Tomcat)统一管理。
原理
客户端发送请求:当客户端(通常是Web浏览器)发送一个HTTP请求到服务器时,请求的URL会指向一个特定的Servlet。
Web容器接收请求:Web容器(例如Tomcat)接收到请求,根据请求的URL确定要调用的Servlet。
Servlet生命周期:如果Servlet尚未初始化,Web容器会加载Servlet类并创建一个Servlet实例。然后,Web容器调用Servlet的
init()
方法进行初始化。init()
方法只会在Servlet的生命周期中被调用一次。处理请求:一旦Servlet初始化完成,Web容器会在单独的线程中调用Servlet的
service()
方法,并将请求对象(HttpServletRequest
)和响应对象(HttpServletResponse
)作为参数传递给它。Servlet处理请求:在
service()
方法中,Servlet可以根据请求的类型(GET、POST等)执行相应的逻辑。它可以读取请求参数、访问数据库、调用其他Java类等,以生成所需的动态内容。生成响应:Servlet可以使用响应对象(
HttpServletResponse
)来设置响应的类型、编码、头部信息等。它可以生成HTML、XML、JSON或其他类型的响应内容,并将其写入响应输出流。发送响应:一旦Servlet生成了响应内容,Web容器将把响应发送回客户端。客户端接收到响应后,可以显示响应的内容或执行其他相应的操作。
Servlet销毁:当Web容器关闭或重新加载Web应用程序时,Servlet的
destroy()
方法会被调用。在destroy()
方法中,Servlet可以执行清理操作,如释放资源、关闭数据库连接等。destroy()
方法只会在Servlet的生命周期结束时被调用一次。
实现数据共享的方式
ServletContext:ServletContext是在整个Web应用程序范围内共享数据的最广泛的方式。它可以存储全局信息,供所有的Servlet组件访问。通过ServletContext对象,Servlet可以获取和设置共享的属性。例如,可以使用
getServletContext()
方法在Servlet中获取ServletContext对象,并使用setAttribute()
和getAttribute()
方法来设置和获取属性。HttpSession:HttpSession提供了一种在用户会话范围内共享数据的机制。每个用户会话都有一个唯一的HttpSession对象,可以存储和检索与特定用户相关的数据。通过
request.getSession()
方法可以获取当前请求的HttpSession对象。Servlet可以使用setAttribute()
和getAttribute()
方法在会话中存储和获取属性。请求属性(Request Attributes):Servlet可以使用HttpServletRequest对象的
setAttribute()
和getAttribute()
方法在请求范围内共享数据。请求属性在同一个请求处理周期内有效,并且仅对该请求的Servlet组件可见。请求参数(Request Parameters):Servlet可以通过HttpServletRequest对象的
getParameter()
方法获取请求参数。请求参数是客户端通过URL查询字符串或表单提交的数据,可以在不同的Servlet组件之间进行共享。上下文参数(Context Parameters):上下文参数是在web.xml文件中配置的全局参数,可以在整个Web应用程序范围内进行共享。Servlet可以使用ServletContext对象的
getInitParameter()
方法来获取上下文参数的值。Cookie类:把用户的数据写给用户的浏览器,浏览器保存一个或多个记录,信息保存在请求中。
MVC
Model View Controller (模型视图控制器)。一般流程:
登录->接收用户登陆请求->处理请求(获取前端页面传来的参数)->交给业务层处理登录业务(如判断登录密码是否正确)->Dao查询数据库
Model
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View
- 展示数据
- 提供链接发起的Servlet请求
Controller
- 接受用户请求
- 交给业务成处理对应代码
- 控制视图跳转