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

建设网站注意哪几点网站制作步骤流程图

建设网站注意哪几点,网站制作步骤流程图,网站伪静态设置,wordpress最好最全的教程9、JavaBean 实体类 JavaBean有特定的写法: 必须要有一个无参构造属性必须私有化必须有对应的get/set方法; 一般用来和数据库的字段做映射 ORM; ORM :对象关系映射 表—>类字段–>属性行记录---->对象 people表 …

9、JavaBean

实体类

JavaBean有特定的写法:

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法;

一般用来和数据库的字段做映射 ORM;

ORM :对象关系映射

  • 表—>类
  • 字段–>属性
  • 行记录---->对象

people表

idnameageaddress
1秦疆1号3西安
2秦疆2号18西安
3秦疆3号100西安
class People{private int id;private String name;private int id;private String address;
}class A{new People(1,"秦疆1号",3"西安");new People(2,"秦疆2号",3"西安");new People(3,"秦疆3号",3"西安");
}
  • 过滤器
  • 文件上传
  • 邮件发送
  • JDBC 复习 : 如何使用JDBC , JDBC crud, jdbc 事务

10、MVC三层架构

什么是MVC: Model view Controller 模型、视图、控制器

10.1、早些年

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSj1Oftx-1677418895011)(JavaWeb.assets/在这里插入图片描述
)]

用户直接访问控制层,控制层就可以直接操作数据库;

servlet--CRUD-->数据库
弊端:程序十分臃肿,不利于维护  
servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码架构:没有什么是加一层解决不了的!
程序猿调用
|
JDBC
|
Mysql Oracle SqlServer ....

10.2、MVC三层架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-shOcmnwM-1677418895012)(JavaWeb.assets/在这里插入图片描述
)]

Model

  • 业务处理 :业务逻辑(Service)
  • 数据持久层:CRUD (Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求 (a,form,img…)

Controller (Servlet)

  • 接收用户的请求 :(req:请求参数、Session信息….)

  • 交给业务层处理对应的代码

  • 控制视图的跳转

    登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确:事务)--->Dao层查询用户名和密码是否正确-->数据库
    

11、Filter (重点)

Filter:过滤器 ,用来过滤网站的数据;

  • 处理中文乱码
  • 登录验证….

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PWVns1y-1677418895013)(JavaWeb.assets/在这里插入图片描述
)]

Filter开发步骤:

  1. 导包

  2. 编写过滤器

    1. 导包不要错

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzqCLG54-1677418895014)(JavaWeb.assets/在这里插入图片描述
      )]

      实现Filter接口,重写对应的方法即可

      public class CharacterEncodingFilter implements Filter {//初始化:web服务器启动,就以及初始化了,随时等待过滤对象出现!public void init(FilterConfig filterConfig) throws ServletException {System.out.println("CharacterEncodingFilter初始化");}//Chain : 链/*1. 过滤中的所有代码,在过滤特定请求的时候都会执行2. 必须要让过滤器继续同行chain.doFilter(request,response);*/public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");System.out.println("CharacterEncodingFilter执行前....");chain.doFilter(request,response); //让我们的请求继续走,如果不写,程序到这里就被拦截停止!System.out.println("CharacterEncodingFilter执行后....");}//销毁:web服务器关闭的时候,过滤会销毁public void destroy() {System.out.println("CharacterEncodingFilter销毁");}
      }
  3. 在web.xml中配置 Filter

    <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!--只要是 /servlet的任何请求,会经过这个过滤器--><url-pattern>/servlet/*</url-pattern><!--<url-pattern>/*</url-pattern>-->
    </filter-mapping>
    

12、监听器

实现一个监听器的接口;(有N种)

  1. 编写一个监听器

    实现监听器的接口…

    //统计网站在线人数 : 统计session
    public class OnlineCountListener implements HttpSessionListener {//创建session监听: 看你的一举一动//一旦创建Session就会触发一次这个事件!public void sessionCreated(HttpSessionEvent se) {ServletContext ctx = se.getSession().getServletContext();System.out.println(se.getSession().getId());Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");if (onlineCount==null){onlineCount = new Integer(1);}else {int count = onlineCount.intValue();onlineCount = new Integer(count+1);}ctx.setAttribute("OnlineCount",onlineCount);}//销毁session监听//一旦销毁Session就会触发一次这个事件!public void sessionDestroyed(HttpSessionEvent se) {ServletContext ctx = se.getSession().getServletContext();Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");if (onlineCount==null){onlineCount = new Integer(0);}else {int count = onlineCount.intValue();onlineCount = new Integer(count-1);}ctx.setAttribute("OnlineCount",onlineCount);}/*Session销毁:1. 手动销毁  getSession().invalidate();2. 自动销毁*/
    }
  2. web.xml中注册监听器

    <!--注册监听器-->
    <listener><listener-class>com.kuang.listener.OnlineCountListener</listener-class>
    </listener>
    
  3. 看情况是否使用!

13、过滤器、监听器常见应用

监听器:GUI编程中经常使用;

public class TestPanel {public static void main(String[] args) {Frame frame = new Frame("中秋节快乐");  //新建一个窗体Panel panel = new Panel(null); //面板frame.setLayout(null); //设置窗体的布局frame.setBounds(300,300,500,500);frame.setBackground(new Color(0,0,255)); //设置背景颜色panel.setBounds(50,50,300,300);panel.setBackground(new Color(0,255,0)); //设置背景颜色frame.add(panel);frame.setVisible(true);//监听事件,监听关闭事件frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);}});}
}

用户登录之后才能进入主页!用户注销后就不能进入主页了!

  1. 用户登录之后,向Sesison中放入用户的数据

  2. 进入主页的时候要判断用户是否已经登录;要求:在过滤器中实现!

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) resp;if (request.getSession().getAttribute(Constant.USER_SESSION)==null){response.sendRedirect("/error.jsp");
    }chain.doFilter(request,response);
    

14、JDBC

什么是JDBC : Java连接数据库!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIAHvBFC-1677418895014)(JavaWeb.assets/在这里插入图片描述
)]

需要jar包的支持:

  • java.sql
  • javax.sql
  • mysql-conneter-java… 连接驱动(必须要导入)

实验环境搭建

CREATE TABLE users(id INT PRIMARY KEY,`name` VARCHAR(40),`password` VARCHAR(40),email VARCHAR(60),birthday DATE
);INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(1,'张三','123456','zs@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(2,'李四','123456','ls@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(3,'王五','123456','ww@qq.com','2000-01-01');SELECT	* FROM users;

导入数据库依赖

<!--mysql的驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>

IDEA中连接数据库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owHKMrpN-1677418895015)(JavaWeb.assets/在这里插入图片描述
)]

JDBC 固定步骤:

  1. 加载驱动
  2. 连接数据库,代表数据库
  3. 向数据库发送SQL的对象Statement : CRUD
  4. 编写SQL (根据业务,不同的SQL)
  5. 执行SQL
  6. 关闭连接
public class TestJdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {//配置信息//useUnicode=true&characterEncoding=utf-8 解决中文乱码String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";String username = "root";String password = "123456";//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//2.连接数据库,代表数据库Connection connection = DriverManager.getConnection(url, username, password);//3.向数据库发送SQL的对象Statement,PreparedStatement : CRUDStatement statement = connection.createStatement();//4.编写SQLString sql = "select * from users";//5.执行查询SQL,返回一个 ResultSet  : 结果集ResultSet rs = statement.executeQuery(sql);while (rs.next()){System.out.println("id="+rs.getObject("id"));System.out.println("name="+rs.getObject("name"));System.out.println("password="+rs.getObject("password"));System.out.println("email="+rs.getObject("email"));System.out.println("birthday="+rs.getObject("birthday"));}//6.关闭连接,释放资源(一定要做) 先开后关rs.close();statement.close();connection.close();}
}

预编译SQL

public class TestJDBC2 {public static void main(String[] args) throws Exception {//配置信息//useUnicode=true&characterEncoding=utf-8 解决中文乱码String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";String username = "root";String password = "123456";//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//2.连接数据库,代表数据库Connection connection = DriverManager.getConnection(url, username, password);//3.编写SQLString sql = "insert into  users(id, name, password, email, birthday) values (?,?,?,?,?);";//4.预编译PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1,2);//给第一个占位符? 的值赋值为1;preparedStatement.setString(2,"狂神说Java");//给第二个占位符? 的值赋值为狂神说Java;preparedStatement.setString(3,"123456");//给第三个占位符? 的值赋值为123456;preparedStatement.setString(4,"24736743@qq.com");//给第四个占位符? 的值赋值为1;preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));//给第五个占位符? 的值赋值为new Date(new java.util.Date().getTime());//5.执行SQLint i = preparedStatement.executeUpdate();if (i>0){System.out.println("插入成功@");}//6.关闭连接,释放资源(一定要做) 先开后关preparedStatement.close();connection.close();}
}

事务

要么都成功,要么都失败!

ACID原则:保证数据的安全。

开启事务
事务提交  commit()
事务回滚  rollback()
关闭事务转账:
A:1000
B:1000A(900)   --100-->   B(1100) 

Junit单元测试

依赖

<!--单元测试-->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>

简单使用

@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!

@Test
public void test(){System.out.println("Hello");
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oe1E6TZJ-1677418895015)(JavaWeb.assets/在这里插入图片描述
)]

失败的时候是红色:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obK1VvNb-1677418895016)(JavaWeb.assets/在这里插入图片描述
)]

搭建一个环境

CREATE TABLE account(id INT PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(40),money FLOAT
);INSERT INTO account(`name`,money) VALUES('A',1000);
INSERT INTO account(`name`,money) VALUES('B',1000);
INSERT INTO account(`name`,money) VALUES('C',1000);
    @Testpublic void test() {//配置信息//useUnicode=true&characterEncoding=utf-8 解决中文乱码String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";String username = "root";String password = "123456";Connection connection = null;//1.加载驱动try {Class.forName("com.mysql.jdbc.Driver");//2.连接数据库,代表数据库connection = DriverManager.getConnection(url, username, password);//3.通知数据库开启事务,false 开启connection.setAutoCommit(false);String sql = "update account set money = money-100 where name = 'A'";connection.prepareStatement(sql).executeUpdate();//制造错误//int i = 1/0;String sql2 = "update account set money = money+100 where name = 'B'";connection.prepareStatement(sql2).executeUpdate();connection.commit();//以上两条SQL都执行成功了,就提交事务!System.out.println("success");} catch (Exception e) {try {//如果出现异常,就通知数据库回滚事务connection.rollback();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}finally {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
http://www.hrbkazy.com/news/16826.html

相关文章:

  • 台州建站服务seo排名系统源码
  • 怎样用ps做网站seo推广平台
  • 如何用wordpress做网站哪里有seo排名优化
  • 网站建设征求意见分析报告搜索推广出价多少合适
  • wordpress登陆好慢百度seo关键词优化市场
  • 唐山网站排名提升免费seo教程
  • 网站设计 线框图重庆百度关键词优化软件
  • 禁忌网站有哪些广州网站优化系统
  • 开一个网站多少钱seo具体怎么优化
  • 有flash的网站做关键词优化
  • 上海进出口博览会seo常见优化技术
  • 医疗美容网站模板企业网站设计模板
  • 有哪些网站开发技术seo外包收费
  • 做html网站搜索框代码关键少数
  • 重庆网站备案在那里网站推广的基本方法为
  • 网站建设目标与期望互联网品牌宣传推广服务公司
  • 网站建设前景如何百度写一篇文章多少钱
  • 沈阳市网站建设企业海外推广渠道
  • WordPress缓存规则设置百度seo优化工具
  • 中国建设银行国际互联网网站大数据营销系统多少钱
  • 如何建立一个好的网站郑州聚商网络科技有限公司
  • 大兴专业网站建设公司网络公关公司
  • 营销型网站建设公司排名seo网站建设优化
  • 网站关键词找不到百度网站下拉排名
  • 安丘网站建设报价邳州网站开发
  • 国内建网站多少钱关键词生成器在线
  • 网站可以做信息抓取吗seo公司网站推广
  • 云匠网app廊坊seo快速排名
  • 做校服的网站seo是什么意思 职业
  • 网站建设报价方案模板关键词搜索工具好站网