栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

初学者Java学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初学者Java学习笔记

笔记(2022.2.21)
进程是资源分配最小的单位,线程是CPU调度的最小单位
进程里面的线程就是,各自按顺序运行的一段程序,他们可以是同一段程序也可以是不同的程序。


cookie、session、token
通过在http传输中添加key来确认老用户身份,省去再次登录。
cookie在客户端实现,session在服务器端实现


servlet(接口)--genericservlet(抽象类)---httpservlet(抽象类)
通过一次次重写,简化请求操作,http协议也封装进httpservlet
servlet相关配置:
    1.一个servlet可以有多个访问路径:@WebServlet({"/s1","/ss1","/sss1"})
    路径原则:1./xxx
        2./xxx/xxx
        3.xxx.do
    localhost:  每次只会访问一个servlet,而且有优先级
    2.request请求 response响应
    *http请求消息格式
    1.请求行
    2.请求头
    3.请求空行
    4.请求体
servlet提供服务的方法: service



HTML

xxx是表单数据提交的位置,此位置不一定是文件名,通过web.xml和
@WebServlet(value=“xxx”)可以让servlet有多个名字

request处理步骤:1.tomcat服务器会根据请求url中的资源路径,创建对应的ServletDemo1的对象。
2.tomcat服务器创建request和response对象,request对象中封装请求消息数据。
3.tomcat将request和response两个对象传递给service方法,并且调用service方法。
4.我们通过request对象获取请求消息数据,通过response对象设置响应消息数据。
request对象体系 
    ServletRequest  ---接口
    HTTPServletRequest ----接口
    tomcat的一个文件 --类
request功能:1.获取请求数据(关键是获取虚拟目录和URI)

错误日志:编写servlet和html,用tomcat启动,但是输入localhost/demo1,找不到该路径。
后来发现正确路径应该是localhost:8080/Property_Management_System/demo1,少了端口号和项目名(空格部分用下划线)。而且设置HTTP端口名为80,可以省去端口号直接访问。

Servlet转发:一个servlet执行一部分,再把任务给另一个servlet去处理
具体语句:request.getRequestDispatcher("/xxx").forward(request,response)


登录界面开发步骤:
1.创建项目,导入HTML页面,配置文件,jar包
2.创建数据库环境
3.创建model(domain) dao web等几种包,在model里面创建user类
4.建立userdao,写JDBCUtils供dao使用
    java连接池(就是访问数据库的文件),主要用C3P0、DBCP、Druid(德鲁伊)


Druid连接池配置
properties pro = new Properties();
InputStream is = JDBCUtiles.class.getClassLoader().getResourceAsStream("druid.properties")
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
Connection conn = ds.getConnection();
System.out.println(conn);

query类的方法
把从数据库接收的数据封装成一个对象:User user=template.queryForObject(sql,
new BeanPropertyRowMapper(User.calss),
loginUser.getUsername(),loginUser.getPassword());



LoginServlet写法
1.设置编码 //req.setCharacterEncoding("utf-8");
2.获取参数 // String username = req.getParameter("usename");
3.封装对象 //User loginUser = new USer();
    loginUser.setUsername(username);
4.调用UserDao的login方法
UserDao dao = new UserDao();
User user = dao.login(loginUser);
5.判断user
if(user == null){
    //登录失败跳转
    req.getRequestDispatcher("failServlet").forward(req,resp);}else{(跳转成功的servlet)}
req.setAttribute("user".user);//存储数据

另一种简单方法(用到commons-beanutils包)
2.Map方法(批量封装)
User user = new User()       //先定义一个JavaBean对象
BeanUtils.populate( user , request.getParameteMap() )   //将request中的参数映射到User Bean中的set和get方法


filter过滤器,拦截器
chain.dofilter()//放行

过滤器执行流程:
    1.执行过滤器
    2.执行放行后的资源
    3.回来执行过滤器放行代码下边的代码

过滤器生命周期方法:
    1.init:服务器启动时,调用一次,加载资源
    2.doFilter:拦截时执行,执行多次
    3.destroy:在服务器关闭后,Filter对象被销毁。正常关闭,调用一次,释放资源

拦截路径配置:
    1.具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
    2.拦截目录:/user
eclipse如何debug

构造方法:
1.构造方法的名称必须和所在的类名完全一样,连大小写也要一样
2.构造方法不要写返回值类型 public Student(){}
3.构造方法不能return一个具体值
4.不写构造方法,编译器自动写
5.一旦编写了一个构造方法,编译器就不会补


Java map类,和python的字典一样
put方法:map.put(“str1”,”str2“),成功放入返回null,键重了返回被替换的键值。

动态规划算法
一种用空间换时间的方法
1.递归中是否有很多子问题被重复调用
2.满足最优子结构,也就是大问题取最优解时组成它的小问题也都是最优解。



多线程编程
Java线程优先级抢占调度,所以程序执行很随机。
java.lang.Thread类
创建方法一 : public class MyThread extend Thread{
    在子类中重写run方法,设置线程任务  public void run(){
    创建子类的实例 MyThread mt = new MyThread();
    调用start,执行线程 mt.start();

创建方法二: 实现java.lang.Runnable接口
    1.创建一个Runnable的实现类 public class RunnableImpl implements Runnable
    2.重写run
    3.创建实现类对象    new RunnableImpl()
    4.创建Thread类对象 new Thread(run);
    5.Thread的类对象调用start()
该类的常用方法:getName()  、   currentThread() 、 setName()   、sleep()
获取当前线程名称 thread.currentThread().getName()
除了setName设置线程名字,还可以继承父类的带参构造方法 thread(String name){super(name);}
sleep()暂停毫秒数继续执行,注意有异常要抓取。



一种简化JDBC技术的库:DbUtils(org.apache.commons.dbutils.DbUtils)
QreryRunner类(org.apache.commons.dbutils.QueryRunner) 是Dbutils的核心类之一,它显著的简化了SQL查询,并与ResultSetHandler协同工作将使编码量大为减少。它包含以下几个方法:

1.       query(Connection conn, String sql, Object[] params, ResultSetHandler rsh):执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。

2.       query(String sql, Object[] params, ResultSetHandler rsh):方法本身不提供数据库连接,执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。

3.       query(Connection conn, String sql, ResultSetHandler rsh):执行无需参数的选择查询。

4.       update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号