java基础及框架笔记

  1. 泛型相关
    <?>
    允许所有泛型的引用调用,可读不可写
    举例:

    <? extends Number>     (无穷小 , Number]
    只允许泛型为Number及Number子类的引用调用
    
    <? super Number>      [Number , 无穷大)
    只允许泛型为Number及Number父类的引用调用
    
    <? extends Comparable>
    只允许泛型为实现Comparable接口的实现类的引用调用
    
  2. 类变量和实例变量都是成员变量
    类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

class person{
    static String age;      //--类变量
    public String name="李四";    //--实例变量
}

public class ClassJava{
    public static void main(String[] args){
        person A=new person();
        A.age="10";
        A.name="张三";
        System.out.println(A.age);  //-结果为"10"
        System.out.println(A.name); //-结果为"张三"
 
        person B=new person();
        //类变量是针对所有对象的,所以A改变age,B的age也改变
        System.out.println(B.age);  //-结果为"10"
        //实例只改变自身的,所以A对象的name改变,不影响对象B的name变量
        System.out.println(B.name); //-结果仍为"李四"
    }
}
public class Demo {

    private String name;  //成员变量、实例变量
    private int age;  //成员变量、实例变量
    private int ID;  //成员变量、实例变量

    public static final String school = "卡塞尔学院";  //成员变量、静态变量(类变量)
    public static String level = "SSS";    //成员变量、静态变量(类变量)

    public int getAge() {
        return age;
    }

    public int getId() {
        return ID;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setId(int ID) {
        this.ID = ID;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void study(){
            String subject1 = "屠龙";  //局部变量
            String subject2 = "炼金术"; //局部变量
            System.out.println("学习科目: " + subject1 + "、" + subject2);
        }

    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.setAge(23);
        demo.setId(14000001);
        demo.setName("楚子航");
        System.out.println("ID: " + demo.getId() + "Age: " + demo.getAge() + "Name: " + demo.getName());
        System.out.print("主修科目: ");
        demo.study();
        System.out.println("学院:" + Demo.school);
        System.out.println("等级:" + Demo.level);
    }
}

局部变量:类的方法中的变量
static 强调只有一份
final 说明是一个常量,final定义的基本类型的值是不可改变的,但是fianl定义的引用对象的值是可以改变的
当某个类的整体定义为final时,表明该类不能被继承,方法不能被覆盖,且final类中的所有方法都隐式指定为是final的,方法声明为final后还可以有效地“关闭”动态绑定。若方法或类不想让别人来继承和修改,设定为final

  1. Lucene全文检索开发框架(没有中文分词器)。庖丁解牛paoding-analysis.jar
  2. Spring MVC的核心DispatcherServlet
  3. Spring MVC详解
  4. 所有框架的核心是用了反射
  5. mybatis动态sql只能判断null不能判断字符串的’’’’。在业务层处理把’’’'设置为null
  6. 术语ORM对象关系映射
  7. Hibernate的session未关闭时数据会缓存,下次执行相同的SQL查询操作直接从缓存拿不会操作数据库。如果值对象(vo/pojo/po说法不一样)处于持久状态每次调用setter方法都会更新数据,如果事物是手动控制则调用若干个setter后才发出更新操作。Hibernate的对象状态设计糟糕是性能低的原因,受传统EJB(Entity实体 Bean)的影响
  8. Annotation注解
    @Autowired:按类型自动注入,如果类型相同无法注入
    @Resource:可以按类型自动注入,如果类型相同可以设置名称就能用。最好用这个。
  9. Spring MVC返回值ModelAndView或String
  10. Spring 其他框架整合spring主要是想用:IOC控制反转(Inversion of Control)容器一个很大的map;DI依赖注入(Dependency Injection)。
    spring面向切面AOP(Aspect Oriented Programming)预编译和动态代理。
  11. ShiroRealm Shiro安全框架,认证,授权(类似Oracle的role,分为实时和非实时)实时频繁操作数据库影响性能,非实时(缓存ShiroCache)。权限等。Shiro的Session不等同于HttpSession,web程序中ShiroSession要结合HttpSession使用。HttpSession包含ShiroSession
  12. Nginx  反向代理服务器
  13. Redis  key-value存储系统
    服务器集群Session缓存问题
    在这里插入图片描述

16.eclipse 查看jar包源代码两种方式
eclipse不装插件情况下:选中对应jar包,右键选择Properties;
Java Source Attachment;
jar包源:带source的jar包
在这里插入图片描述
mybatis日期时间处理https://www.tpyyes.com/a/javaweb/2017/1201/417.html

        <dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.9.8</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.2</version>
		</dependency>

vo类:
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Timestamp addtime;//import java.sql.Timestamp包不是util包

xml:
<result column="addtime" jdbcType="TIMESTAMP" property="addtime" javaType="java.sql.Timestamp"/>

处理类:
@RequestMapping("/getAllUser2")
	@ResponseBody
	public List<User> getAllUser2() {
		List<User> userList = userService.findAllUser();	
		return userList;
	}

HTML:
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<input type="button" value="点击获取数据"/>
<table width="80%" align="center">
	<tr>
		<th>ID</th>
		<th>上传者姓名</th>
		<th>性别</th>
		<th>专业</th>
		<th>电话</th>
		<th>邮箱</th>
		<th>注册时间</th>
	</tr>
	<tbody>
	
	</tbody>
</table>
<script type="text/javascript">
$(document).ready(function(){
	$("input[type='button']").click(function(){
		$.post("/Myexam/user/getAllUser2", function(data){
			var html = "";
// 	    	for(var i=0 ;i<data.length ;i++){
			for(i in data){
	    	html += "<tr>"
	    	+"<td>"+data[i].userid+"</td>"
	    	+"<td>"+data[i].realname+"</td>"
	    	+"<td>"+data[i].sex+"</td>"
	    	+"<td>"+data[i].major+"</td>"
	    	+"<td>"+data[i].telephone+"</td>"
	    	+"<td>"+data[i].email+"</td>"
	    	+"<td>"+data[i].addtime+"</td>"
	    	+"</tr>";
	    } 
	    $("tbody").html(html);
		});
	});
});
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SSM(Spring+SpringMVC+MyBatis)是一种基于Java语言的Web开发框架。学习这个框架的过程中,我深刻体会到它的强大和灵活性。 首先,Spring框架为开发者提供了一个强大的IOC(Inversion of Control)容器,它能够管理和注入对象,减少了代码之间的耦合性。通过配置文件或注解,我们可以轻松地定义和获取各种对象,提高了代码的可维护性和可扩展性。 其次,SpringMVC框架是一种MVC(Model-View-Controller)设计模式的实现,它用于处理Web请求和响应。通过配置一个请求映射表和处理器,我们可以将请求分发给相应的控制器进行处理,并将处理结果返回给客户端。SpringMVC还提供了一些便捷的注解和标签,用于简化页面的渲染和参数的绑定。 最后,MyBatis是一种优秀的持久化框架,它能够将数据库操作与Java对象之间的映射简化为简单的配置。通过编写SQL映射文件和定义POJO(Plain Old Java Object)类,我们可以方便地进行数据库的增删改查操作,而无需编写冗长的SQL语句。 在学习Java SSM框架的过程中,我深入理解了软件开发过程中的MVC思想,并学会了如何利用Spring、SpringMVC和MyBatis来实现一个完整的Web应用程序。通过不断的实践和调试,我逐渐培养了自己解决问题和调试代码的能力。 总结起来,学习Java SSM框架使我深入理解了软件开发的各个环节,并提升了我的编码能力和开发效率。我相信这些知识和经验将对我的职业发展和项目实施起到积极的促进作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值