当前位置: 首页 > wzjs >正文

公司如何做自己的网站肇庆疫情最新情况

公司如何做自己的网站,肇庆疫情最新情况,北京建设集团网站,wordpress二级菜单特效目录 一、JavaBean 1、规范与定义 2、与JavaBean相关的JSP动作标签 二、MV开发模式(JSPJavaBean) 三、Servlet组件 1、Servlet定义 2、基于HTTP请求的Servlet开发 3、Sevlet执行原理 4、控制器程序的分层设计(DAO)模式 5、…

目录

一、JavaBean

1、规范与定义

2、与JavaBean相关的JSP动作标签

 

二、MV开发模式(JSP+JavaBean)

三、Servlet组件

1、Servlet定义

2、基于HTTP请求的Servlet开发

3、Sevlet执行原理

4、控制器程序的分层设计(DAO)模式

5、Servlet实现文件上传与下载 (我赌他不考)

四、Servlet监听器和过滤器(相信我它也考不到,这么多文字他自己肯定也懒得看,过滤器可以看一下)

1、Servle监听器

1.概念和作用

2. 常见的监听器类型

3. 示例代码(以 ServletContextListener 为例)

二、Servlet 过滤器(Filter)

1. 概念和作用

2. Filter 接口的方法

3. 示例代码(简单的字符编码过滤器)


一、JavaBean

1、规范与定义

定义:       

        1、字段私有,public方法来访问私有字段set/get/is等方法

        2、最好提供一个无参的构造

        3、最好实现一个接口

概念:JavaBean一般只封装数据,不包含复杂逻辑的方法

属性:如果Java Bean中只要有一个get/set方法则我们就称为该Java Bean中有一个xxx属性。(例如下方示例我们就可以说Student这个JavaBean有name属性)

        :其实这个对于我们来说这是很熟悉的,无参构造和带参构造在我们C++中如果你的代码规范的话,这两个是很好理解的;get和set在C++中就是其它文件可以对某一个文件中的一个私有成员进行访问。

示例:

testJavaBean.java

package com.example;class Student //加上接口的写法就是class Student implements Serializable
{private String name;public Student() {}public Student(String name) {this.name = name;}// Getter 和 Setter 方法public String getName() {return name;}public void setName(String name) {this.name = name;}} 

 student.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.example.Student" %>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>jsp对javabean的使用</title>
</head>
<body><%Student student = new Student();student.setName("王五");%><h2>学生信息</h2><p>姓名: <%= student.getName() %></p>
</body>
</html>   

2、与JavaBean相关的JSP动作标签

<jsp:useBean>

此标签用于在 JSP 页面里创建或者查找 JavaBean 实例。

<jsp:useBean id="beanName" class="package.className" scope="page|request|session|application" />
  1. id:JavaBean 实例的唯一标识符,后续可通过该标识符引用这个实例。

  2. class:JavaBean 类的全限定名。

  3. cope:指定 JavaBean 实例的作用域,有四个可选值:

    1. page:仅在当前 JSP 页面有效。

    2. request:在当前请求范围内有效。

    3. session:在整个会话期间有效。

    4. application:在整个应用程序范围内有效。

根据以上testJavaBean.java写的示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>JavaBean 动作标签示例</title>
</head>
<body><!-- 创建 Student JavaBean 实例 --><jsp:useBean id="student" class="com.example.Student" scope="request" /><!-- 设置 JavaBean 的属性值 --><jsp:setProperty name="student" property="name" value="李四" /><!-- 显示 JavaBean 的属性值 --><h2>学生信息</h2><p>姓名: <jsp:getProperty name="student" property="name" /></p>
</body>
</html> 

        根据以上我们可以理解到其实<jsp:useBean ……>也就相当于new了;<jsp:setProperty……>和<jsp:getProperty……>也就是直接代替了set/get函数。 

 

二、MV开发模式(JSP+JavaBean)

        JavaBean+JSP开发模式我们一般成为MV模式或Model1模式,可以很好实现前后端业务分离。简单来说就是客户在JSP页面操作,JSP去调用JavaBean进行数据处理。这其实也就是MVC少了C罢了。

三、Servlet组件

1、Servlet定义

        JSP代表MVC中的V但还是有有一些业务逻辑,Servlet实际上就是进一步分理出业务逻辑。

        概念:运行在服务端的小程序

                Servlet就是一个实现了javax.servlet.Servlet接口,定义了Java类被Tomcat识别的规则。

2、基于HTTP请求的Servlet开发

没什么好讲的看懂示例就可以了与C++的MVC做对比性观看

文件路径

my-web-app
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── MyServlet.java
│       └── webapp
│           ├── WEB-INF
│           │   ├── web.xml
│           │   └── classes
│           └── index.jsp

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"version="5.0"><!-- Servlet 配置 --><servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.example.MyServlet</servlet-class></servlet><servlet-mapping><!-- 与上同那么 --><servlet-name>MyServlet</servlet-name><url-pattern>/myServlet</url-pattern></servlet-mapping>
</web-app>    

<servlet-mapping>对servlet进行一个映射;<url-pattern>就是设置一个访问的路径可以通过哪个路径访问到这里就是例如:https://localhost:8080/myServlet可以访问到这个servlet,下main的注解中是相同的

MyServlet.java

import java.io.IOException;
import jakarta.servlet.*;@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String message = request.getParameter("message");}
}    

index.jsp    

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Servlet Example</title>
</head>
<body><h1>Send Request to Servlet</h1><!-- GET 请求表单 --><form action="myServlet" method="get"><label for="name">Name:</label><input type="text" id="name" name="dcm"><input type="submit" value="Send GET Request"></form><!-- POST 请求表单 --><form action="myServlet" method="post"><label for="message">Message:</label><textarea id="message" name="hello"></textarea><input type="submit" value="Send POST Request"></form>
</body>
</html>    

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!-- 配置 UserServlet --><servlet><servlet-name>UserServlet</servlet-name><servlet-class>com.example.servlet.UserServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserServlet</servlet-name><url-pattern>/user</url-pattern></servlet-mapping></web-app>

3、Sevlet执行原理

 执行原理:

(1)当服务器接收到客户端请求后,会解析请求URL路径,获取访问的Servlet的资源路径。

(2)查找web.xml文件,是否有对应的<url-pattern>标签体内容

(3)如果有,则找对应的<servlet-class>全类名

(4)tomcat会将字节码文件加载进内存,并且会创建对象

(5)调用其方法,访问的时候进行初始化init(),执行的时候执行service(),销毁的时候执行destroy(),很好理解这三个就差不多相当于C++中的纯虚函数,只需要重写它就会自己调用

4、控制器程序的分层设计(DAO)模式

书上讲的很复杂,实际上我们用C++中的MVC来看就易懂很多了

这个就是本人写的一个C++项目中使用到了MVC框架。model中的usermodel继承于我的basemodel也就是一个总业务逻辑,quser呢就是我们访问到的数据对象。

这是Java中的MVC框架。我们对比来看其实

service->UserService.jav+dao->UserDAO.java相当于singleDB+control->qcontrol+model->basemodel->usermodel.cpp去数据库中访问我们需要的user数据,

java中的model->User.java相当于我们的data->quser.cpp一个访问的数据对象

java示例:

User.java (数据对象)

public class User {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

UserDAO.java 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class UserDAO {private static final String URL = "jdbc:mysql://localhost:3306/mydb";private static final String USER = "root";private static final String PASSWORD = "123456";public User findById(int id) {User user = null;try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id =?")) {stmt.setInt(1, id);ResultSet rs = stmt.executeQuery();if (rs.next()) {user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));}} catch (SQLException e) {e.printStackTrace();}return user;}public List<User> findAll() {List<User> users = new ArrayList<>();try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users")) {ResultSet rs = stmt.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));users.add(user);}} catch (SQLException e) {e.printStackTrace();}return users;}// 其他增删改操作方法...
}

UserService.java (调用我们的UserDao,然后返回数据)

import java.util.List;public class UserService {private UserDAO userDAO = new UserDAO();public User findUserById(int id) {return userDAO.findById(id);}public List<User> findAllUsers() {return userDAO.findAll();}// 其他业务逻辑方法...
}

UserServlet.java (实例化UserService然后获取它的返回值去给页面)

import java.io.IOException;
import java.util.List;import jakarta.servlet.*;@WebServlet("/user")
public class UserServlet extends HttpServlet {private UserService userService = new UserService();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<User> users = userService.findAllUsers();request.setAttribute("users", users);request.getRequestDispatcher("userList.jsp").forward(request, response);}
}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>用户管理</title>
</head><body><h1>用户管理系统</h1><a href="user">查看用户列表</a>
</body></html>

C++示例:

 quser.h(java中的User一样)

singledb .cpp(类似于DAO层但这个用的是单例模式)

#include "singledb.h"//懒汉式单例设计模式
SingleDB* SingleDB::db=nullptr;SingleDB *SingleDB::getInstance()
{//只有第一次调用会newif(SingleDB::db==nullptr){SingleDB::db=new SingleDB();}return SingleDB::db;
}void SingleDB::relaseInstance()
{if(SingleDB::db!=nullptr){delete SingleDB::db;SingleDB::db=nullptr;}
}int SingleDB::openDB(char *path)
{int res=0;res=sqlite3_open(path,&this->psqlite);if(res==SQLITE_OK){//qDebug()<<"open success";}else{qDebug()<<"错误码:"<<sqlite3_errcode(this->psqlite);qDebug()<<"错误信息:"<<sqlite3_errmsg(this->psqlite);}return res;
}void SingleDB::closeDB()
{if(this->psqlite!=NULL){int res=sqlite3_close(this->psqlite);if(res==SQLITE_OK){qDebug()<<"open success";}else{qDebug()<<"错误码:"<<sqlite3_errcode(this->psqlite);qDebug()<<"错误信息:"<<sqlite3_errmsg(this->psqlite);}}
}SingleDB::SingleDB()
{openDB("../database/IntelligentSecuritySystem.db");
}SingleDB::~SingleDB()
{closeDB();
}sqlite3 *SingleDB::getPsqlite() const
{return psqlite;
}

和上面的singledb结合在一起来返回一个从数据库中查到的user数据。只不过在java中返回的数据专门用了一个Service来返回

以下是cpp获取数据库中数据的方法 

 

5、Servlet实现文件上传与下载 (我赌他不考)

略……

四、Servlet监听器和过滤器(相信我它也考不到,这么多文字他自己肯定也懒得看,过滤器可以看一下)

说了不考,那么不相信我,那还看我的博客复习啥。既然要看那我就简单以我的理解给你概括一下吧,下面这些呢,一般都是init->过程->destory过程好了结束了,就是创建->执行->销毁,好了吧浪费一分钟了吧!快去下一篇吧!!!

1、Servle监听器

1.概念和作用

Servlet 监听器是一种特殊的 Java 类,用于监听 Web 应用程序中的各种事件,比如 Servlet 上下文(ServletContext)的创建和销毁、会话(HttpSession)的创建和销毁、请求(ServletRequest)的初始化和销毁等。通过监听器,我们可以在这些事件发生时执行一些特定的操作,例如记录日志、初始化资源、统计在线用户数量等。

2. 常见的监听器类型

Servlet 上下文监听器:

    ServletContextListener:监听 ServletContext 的创建和销毁事件。当 Web 应用程序启动时,ServletContext 被创建,contextInitialized(ServletContextEvent event) 方法被调用;当 Web 应用程序停止时,ServletContext 被销毁,contextDestroyed(ServletContextEvent event) 方法被调用。

    ServletContextAttributeListener:监听 ServletContext 属性的添加、删除和替换事件。对应的方法分别是 attributeAdded(ServletContextAttributeEvent event)attributeRemoved(ServletContextAttributeEvent event) 和 attributeReplaced(ServletContextAttributeEvent event)

会话监听器

    HttpSessionListener:监听 HttpSession 的创建和销毁事件sessionCreated(HttpSessionEvent event) 方法在会话创建时调用,sessionDestroyed(HttpSessionEvent event) 方法在会话销毁时调用。          

    HttpSessionAttributeListener:监听 HttpSession 属性的添加、删除和替换事件。对应的方法是 attributeAdded(HttpSessionBindingEvent event)attributeRemoved(HttpSessionBindingEvent event) 和 attributeReplaced(HttpSessionBindingEvent event)。                              

    HttpSessionActivationListener:监听 HttpSession 的活化(从持久化存储恢复到内存)和钝化(将内存中的会话数据保存到持久化存储)事件。sessionDidActivate(HttpSessionEvent event) 方法在会话活化时调用,sessionWillPassivate(HttpSessionEvent event) 方法在会话钝化时调用。

请求监听器

    ServletRequestListener:监听 ServletRequest 的初始化和销毁事件requestInitialized(ServletRequestEvent event) 方法在请求初始化时调用,requestDestroyed(ServletRequestEvent event) 方法在请求销毁时调用。       

    ServletRequestAttributeListener:监听 ServletRequest 属性的添加、删除和替换事件。对应的方法分别是 attributeAdded(ServletRequestAttributeEvent event)attributeRemoved(ServletRequestAttributeEvent event) 和 attributeReplaced(ServletRequestAttributeEvent event)

3. 示例代码(以 ServletContextListener 为例)
import jakarta.servlet.*;@WebListener
public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("ServletContext 初始化了!");// 可以在这里进行一些初始化操作,如加载配置文件等}@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("ServletContext 销毁了!");// 可以在这里进行资源清理等操作}
}

二、Servlet 过滤器(Filter)

1. 概念和作用

Servlet 过滤器是一个实现了 Filter 接口的 Java 类,它可以对 Web 应用程序中的请求和响应进行拦截和处理。过滤器可以在请求到达 Servlet 之前对请求进行预处理,也可以在 Servlet 处理完请求后对响应进行后处理。常见的应用场景包括权限验证、字符编码转换、日志记录、请求参数修改等。

2. Filter 接口的方法

    init(FilterConfig filterConfig):在过滤器被实例化后,容器会调用这个方法来初始化过滤器。FilterConfig 对象提供了访问过滤器配置信息的方法。

    doFilter(ServletRequest request, ServletResponse response, FilterChain chain):这是过滤器的核心方法,当请求进入过滤器时,容器会调用这个方法。在这个方法中,过滤器可以对请求和响应进行处理,然后通过 chain.doFilter(request, response) 方法将请求传递给下一个过滤器或目标 Servlet。

    destroy():当过滤器被销毁时,容器会调用这个方法。在这个方法中,可以进行一些资源清理的操作。

3. 示例代码(简单的字符编码过滤器)
import jakarta.servlet.*;import java.io.IOException;@WebFilter("/user") // 拦截所有访问 /user 的请求
public class CharacterEncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作,这里可以不做具体处理}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {request.setCharacterEncoding("UTF-8"); // 设置请求的字符编码response.setCharacterEncoding("UTF-8"); // 设置响应的字符编码chain.doFilter(request, response); // 将请求传递给下一个过滤器或目标 Servlet}@Overridepublic void destroy() {// 资源清理操作,这里可以不做具体处理}
}
http://www.dtcms.com/wzjs/118970.html

相关文章:

  • 门户网站建设系统杭州推广系统
  • 网站作为医院形象建设网店推广是什么
  • 这么做介绍网站的ppt实体店100个营销策略
  • 泰州网站建设费用刷推广链接人数的软件
  • 北海网站建设服务商上海网站建设推广服务
  • 安顺公司做网站合肥网络推广平台
  • 应用市场最新版下载什么是搜索引擎优化seo
  • 新服务器做网站seo宣传网站
  • 哈尔滨网站设计公司哪家更好百度收录入口提交查询
  • wordpress添加产品产品列表北京网站优化排名
  • 新网站如何做测试青岛网站设计
  • 免费网址推荐郑州seo阿伟
  • 信用中国门户网站建设方案谷歌seo是什么意思
  • 长沙建设网站网站推广seo优化
  • 网站建设作业多少钱免费私人网站建设平台
  • 网站开发属于哪一类济南seo
  • 唯品会的网站建设关键词工具
  • 邢台做网站可信赖快速排名软件seo系统
  • 山东建设局网站首页凤凰军事新闻最新消息
  • 可以自己做网站百度一下打开
  • 广州英文外贸seo网站优化谷歌google play官网
  • 公司网站高端公众号开发网站公司
  • 深圳做网站哪家公司专业广州最新疫情情况
  • 荔湾企业网站建设长沙正规竞价优化推荐
  • 网站平台被骗了怎么办百度刷排名优化软件
  • 网站设计风格猪八戒网接单平台
  • 南京电商网站建设技术培训平台
  • 长春网站制作专业合肥网络优化公司有几家
  • 医院做网站需要去备案站长工具权重查询
  • 株洲市哪里有做公司官方网站唯尚广告联盟平台