资讯详情

动力节点-crm-项目笔记(待完善)

文章目录

    • 1、营造开发环境:
      • 1.1创建项目:crm-project
        • 1.1.1设置JDK.
        • 1.1.2创建工程:crm
        • 1.1.3补充目录结构:
        • 1.1.4设置编码格式:UTF-8
        • 1.1.5数据库编码设置
        • 1.1.设置6字符集编码
    • 2.spring application配置文件知识点
      • 2.1.applicationContext-datasource.xml
        • 2.1.1.sqlsessionFactory他是数据库
        • 2.1.2为什么使用127.0.0.1不用localhost
      • 2.2 applicationContext-mvc.xml
        • 2.2.一起加载服务器servlet实例 servlet会加载mvc的配置文件
        • 2.2.2拦截器
      • 2.3 applicationContext.xml
        • 2.3.1 监听器加载service层和dao层配置文件
        • 2.3.2服务器启动配置文件的加载顺序
      • 2.4 pom.xml
        • 2.4.1 `和`
        • 2.4.2maven编译配置文件
    • 3.tomcat和idea
        • 3.1idea如何放置项目?tomcat webapps下的
        • 3.2使用127.0.01ip地址
        • 3.3.默认设置恢复代码提示
    • 4.jsp
      • 4.1 jquery
        • 4.1.1 在必要时使用标签保存数据:
        • 4.1.2 jsp操作原理:
        • 4.1.3 ajax $.each( )的用法
        • 4.1.4 submit发送同步,button通过绑定 发送异步
        • 4.1.5 jquery小结
        • 4.1.6 ajax
        • 4.1.7 jquery事件函数的用法:
      • 4.2 web
        • 4.2.1 cookie的参数传输
        • 4.2.2 cookie和session
        • 4.2.3 window.location.href
        • 4.2.4 jsp如何在浏览器上显示?
        • 4.2.5 jsp和html的编码区别
        • 4.2.6 `浏览器只能解决网页,json字符串只能由ajax和js来解决`
        • 4.2.7 index.jsp自带根目录base的标签的
        • 4.2.8 html中就加id 等html标签 就不要加js 的标签
        • 4.2.9 同步请求 (页面跳转)
        • 4.2.10 入口函数在加载整个页面后执行
        • 4.2.11 web的作用域
        • 4.2.12 s e s s i o n S c o p e . s e s s i o n U s e r . n a m e 和 {sessionScope.sessionUser.name}和 sessionScope.sessionUser.name和{sessionUser.name}区别
      • 4.3. bootstrpt
        • 4.3.1 页面切割技术:`和:` ``
          和:``
        • 4.3.2 模态窗口
          • 模态窗口:
          • 显示和隐藏控制模式窗口:
          • 模式窗口的意义:
        • 4.3.3 正则表达式
        • 4.3.4 日历
        • 4.3.5 日历用法
        • 4.3.6 分页插件
        • 4.3.7

1,搭建开环境: 1)创建项目:crm-project 设置JDK. 创建工程:crm 补全目录结构: 设置编码格式:UTF-8 2)添加jar包:添加依赖—参考课件. 3)添加配置文件:参考课件. 4)添加静态页面资源: webapps |->stumgr |->crm |->.html,.css,.js,.img test.jsp |->WEB-INF |->web.xml |->classes |->lib *web应用根目录下的内容都是不安全的,外界可以通过url直接访问; 所以,一般为了数据的安全,都会把页面放到WEB-INF下,因为WEB-INF目录下的资源是受保护的,外界不能直接访问。

1,搭建开发环境:

1.1创建项目:crm-project

1.1.1设置JDK.

image-20220517092308958

1.1.2创建工程:crm

1.1.3补全目录结构:

1.1.4设置编码格式:UTF-8

1.1.5数据库编码设置

1.1.6字符集编码的设置

需要设置字节码的

  • 编码
  • 解码
  • 传输数据的字节码

2.spring application配置文件知识点

2.1.applicationContext-datasource.xml

2.1.1.sqlsessionFactory他是一个数据库

2.1.2为什么使用127.0.0.1不用localhost

localhost只是tomcat配置的一个映射,localhost是可以修改的有风险

2.2 applicationContext-mvc.xml

2.2.1服务器一起东就加载servlet实例 servlet会加载mvc的配置文件

<load-on-startup>1</load-on-startup> 服务器一起东就加载servlet实例

   <!-- Spring mvc分发servlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-mvc.xml</param-value>
        </init-param>
       
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

2.2.2拦截器

​ a)提供拦截器类:implements HandlerInterceptor{ ​ --pre ​ --post ​ --after ​ } ​ b)配置拦截器:springmvc.xml

能通过return ture 不能通过return false

配置拦截器

<mvc:interceptors>
    <mvc:interceptor>
        拦截的内容
        <mvc:mapping path="/settings/**"/>
        <mvc:mapping path="/workbench/**"/>
        放行的内容   有一个东西即要放行也要拦截,优先进行放行
        <mvc:exclude-mapping path="/settings/qx/user/toLogin.do"/>
        <mvc:exclude-mapping path="/settings/qx/user/login.do"/>
        <bean class="com.bjpowernode.crm.settings.web.interceptor.LoginInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

<mvc:mapping path="/settings/**"/> 拦截的是url

settings/* 拦截一层目录 settings/*/login.jsp还是没拦截到

settings/** 拦截settins下所有目录

2.3 applicationContext.xml

2.3.1 监听器加载service层和dao层的配置文件

(applicationContext.xml,applicationContext-datasource.xml)

监听器在服务器一启动是就会进行加载

2.3.2服务器启动对配置文件的加载顺序

服务器一启动就用监听器加载applicationContext.xml applicationContext.xml加载aplicationContext-datasource.xml aplicationContext-datasource.xml 会加载mybatis-config.xml

dispatcherservlet一启动就会加载application-mvc.xml配置文件

2.4 pom.xml

2.4.1 <groupId>和<artifactId>

2.4.2maven对配置文件的编译

maven默认只会编译java的源文件,不会编译xml配置文件

加上这个就会编译xml配置文件了

3.tomcat和idea

3.1idea项目是如何放在tomcat webapps下的

tomcat

webapps |->stumgr |->crm |->.html,.css,.js,.img test.jsp |->WEB-INF |->web.xml |->classes |->lib

  • maven会把java代码,配置文件 编译好放在classes , 把依赖jar包放在lib目录下

  • 静态资源放在webapp下,会直接部署到tomcat webapps下的crm项目中根目录中

  • 页面要放在webapp web-inf下

  • 在crm根目录中能直接被访问,web-inf下的资源是受保护的不能直接访问,

  • 要通过controller跳转才能访问,到了controller后我们就能掌握主动权,对用用户进行验证

  • 为什么不将image,jquery放入web-inf下,这些东西放在web-inf下,因为要我们通过controller转发才能实现到页面上会非常麻烦,用一个要跳一个会非常麻烦

3.2使用127.0.01ip地址

3.3恢复代码提示的默认设置

4.jsp

4.1 jquery

4.1.1 使用标签保存数据,以便在需要的时候能够获取到这些数据:

不加引号会认为是变量,加了才认为是字符串

var activityId='${requestScope.activity.id}';
//删除活动备注
$("#deleteActivityRemark").click(function () { 
        
   //获得自己创建的属性的值
   var id=$("#deleteActivityRemark").attr("remarkId");
   var activityId='${requestScope.activity.id}';
    
    
    
    
    <a class="myHref" remarkId="${remark.id}"  id="deleteActivityRemark" ><span class="glyphicon glyphicon-remove" style="font-size: 20px; color: #E6E6E6;"></span></a>
			

4.1.2 jsp的运行原理:

  1. xxx.jsp:
  • tocmat中运行: 把xxx.jsp翻译成一个servlet, 运行servlet,运行的结果是一个html网页 把html网页输出到浏览器
  • html网页在浏览器上运行: 先从上到下加载html网页到浏览器,在加载过程中,运行前端代码 当页面都加载完成,再执行入口函数和js.
  1. 把页面片段显示在动态显示在页面中:
    • 选择器.html(htmlStr):覆盖显示在标签的内部
    • 选择器.text(htmlStr):覆盖显示在标签的内部
    • 选择器.append(htmlStr):追加显示在指定标签的内部的后边

4.1.3 ajax $.each( )的用法

success:function (data) { 
        
				//显示总条数
				//$("#totalRowsB").text(data.totalRows);
				//显示市场活动的列表
				//遍历activityList,拼接所有行数据
				var htmlStr="";
				$.each(data.activityList,function (index,obj) { 
        
					htmlStr+="<tr class=\"active\">";
					htmlStr+="<td><input type=\"checkbox\" value=\""+obj.id+"\"/></td>";
					htmlStr+="<td><a style=\"text-decoration: none; cursor: pointer;\" οnclick=\"window.location.href='detail.html';\">"+obj.name+"</a></td>";
					htmlStr+="<td>"+obj.owner+"</td>";
					htmlStr+="<td>"+obj.startDate+"</td>";
					htmlStr+="<td>"+obj.endDate+"</td>";
					htmlStr+="</tr>";
				});
				$("#tBody").html(htmlStr);

htmlStr+=“<tr class=“active”>”; 在"" 双引号中加 双引号 要在里面的双引号中 加上 \" 进行转义>

htmlStr+=“”+obj.owner+“”; 在"" 双引号中加 "+ +" 表示 obj.owner 不是一个字符,而是数据

4.1.4 submit发送同步,button通过绑定 发送异步

<input type="submit" value="发送同步请求">
<input type="button" id="queryBtu" value=" 通过id创建一个jquery对象绑定按钮,发送异步请求">

4.1.5 jquery小结

<script type="text/javascript">
   $(function () { 
        
      $("#loginBtu").onclick(function () { 
        
         var loginAct =$.trim ($("#loginAct").val());

         var loginPwd =$.trim( $("#loginPwd").val());

         var isRemPwd = $("#isRemPwd").prop("checkbox");

         
      })
   })
</script>
  • trim 方法是去掉空格

  • 使用jquery获取指定元素的指定属性的值: 选择器.attr("属性名");//用来获取那些值不是true/false的属性的值. 选择器.prop("属性名");//用来获取值是true/false的属性的值.例如:checked,selected,readonly,disabled等。

  • jquery中判断只有==和!=,因为是弱语言所以没有equel

  • 后台放送过去的是一个json(应该是returnObject对象自动变json)

  • (前端ajax定义好发送的就是json)后台接受的也是一个json

$("#msg").html(data.message);
$("#msg").text(data.message);
  • html即能写文本信息也能写标签信息

  • text 只能写标签信息

4.1.6 ajax

​ loginAct:loginAct, ​ loginPwd:loginPwd, ​ isRemPwd:isRemPwd

这种是不标准的未加双引号

//给"登录"按钮添加单击事件
			$("#loginBtn").click(function () { 
        
				//收集参数
				var loginAct=$.trim($("#loginAct").val());
				var loginPwd=$.trim($("#loginPwd").val());
				var isRemPwd=$("#isRemPwd").prop("checked");
				//表单验证
				if(loginAct==""){ 
        
					alert("用户名不能为空");
					return;
				}
				if(loginPwd==""){ 
        
					alert("密码不能为空");
					return;
				}

				//显示正在验证
				//$("#msg").text("正在努力验证....");
				//发送请求
				$.ajax({ 
        
					url:"settings/qx/user/login.do",
					data:{ 
        
						"loginAct":loginAct,
						"loginPwd":loginPwd,
						"isRemPwd":isRemPwd
					},
					type:"post",
					dataType:"json",
					async:"false",
					success:function (data) { 
        
						if(data.code=="1"){ 
        
							//跳转到业务主页面
							window.location.href="workbench/index.do";
						}else{ 
        
							//提示信息
							$("#msg").text(data.message);
						}
					},
					beforeSend:function () { 
        //当ajax向后台发送请求之前,会自动执行本函数;
						//该函数的返回值能够决定ajax是否真正向后台发送请求:
						//如果该函数返回true,则ajax会真正向后台发送请求;否则,如果该函数返回false,则ajax放弃向后台发送请求。
						$("#msg").text("正在努力验证....");
						return true;
					}
				});
			});

4.1.7 jquery事件函数的用法:

  • 选择器.click(function(){//给指定的元素添加事件 //js代码 });
  • 选择器.click();//在指定的元素上模拟发生一次事件

4.2 web

4.2.1 cookie的参数传输

4.2.2 cookie和session

在默认情况下,session对象在关闭浏览器后并不是立刻被销毁,因此,为了考虑系统的安全性,在用户退出时,需要即刻清除session对象,防止他人盗用session对象中的信息

其实在浏览器关闭后,session并没有失效,正常来说一个session的存活时间是30分钟,也就是在不操作这个session的情况下,30分钟自动清除。可是实际中浏览器关闭,设置的session也会随之消失,这里的消失是他这个session的你找不到了,不是他没有了,因为在浏览器重新打开时,浏览器总会自动给你创建一个的新的session。session并不是唯一的,每个session都有自己的一个专属sessionId,这个sessionId在浏览器打开时创建,保存在浏览器的cookie中,浏览器关闭,cookie自动清除,sessionId丢失,之前的session找寻不到!

cookie不销毁也会这样

4.2.3 window.location.href

window.location.href = "settings/qx/user/toLogin.do";

4.2.4 jsp如何显示到浏览器上的

jsp就是一个servlet,先在tomcat运行,结果是一个html

4.2.5 jsp和html的编码区别

jsp默认是utf-8

html iso8859-1

4.2.6 浏览器只能解决网页,json字符串只能由ajax和js来解决

4.2.7 index.jsp在根目录下自带base的标签的

<%
	String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>

<base href="<%=basePath%>">

4.2.8 html中就加id 等html标签 就不要加js 的标签

4.2.9 同步请求 (页面跳转了)

同步请求的方式 有地址栏,form表单,超链接 ajax只有地址栏一个方式 window.loction.href

4.2.10 整个页面加载完才执行入口函数

也就是静态资源加载完后

<script type="text/javascript">
    $(function () { 
        
      
    });
</script>

4.2.11 web的作用域

jsp作用域

1,把控制层(controller)代码中处理好的数据传递到视图层(jsp),使用作用域传递:

pageContext:用来在同一个页面的不同标签之间传递数据。

jsp的每个标签对应着一个类 如<c:if 就对应着一个类

request:在同一个请求过程中间传递数据。

session: 同一个浏览器窗口的不同请求之间传递数据。

或者是一个用户的范围内

application:所有用户共享的数据,并且长久频繁使用的数据。

4.2.12 s e s s i o n S c o p e . s e s s i o n U s e r . n a m e 和 {sessionScope.sessionUser.name}和 sessionScope.sessionUser.name和{sessionUser.name}区别

一个在指定的范围找 一个是在四个作用域所有的范围找

4.3. bootstrpt

4.3.1 页面切割技术:<frameset>和<frame>: <div>和<iframe>:

1)不灵活效率低

<frameset>和<frame>:
    <frameset>:用来切割页面.
                <frameset cols="20%,60%,20%" rows="10%,80%,10%">
    <frame>:显示页面.
                <frame src="url">
	<frameset cols="20%,60%,20%">
		<frame src="url1" name="f1">
		<frame src="url2" name="f2">
		<frame src="url3" name="f3">
	</frameset>

         每一个<frame>标签就是一个独立的浏览器窗口。

     <a href="url" target="f3">test</a>

2)<div>和<iframe>: 灵活效率高

<div>:切割页面。
        <div style="height:10%;width=20%">
    
</div>
</div>
 <iframe>:显示页面。
            <div style="height:10%;width=20%">
		<iframe href="url">
	    </div>
3,创建市场活动:

4.3.2 模态窗口

模态窗口:

模拟的窗口,本质上是<div>的一个表单,通过设置z-index大小来实现的; z轴 初始时,z-index初始参数是<0,所以不显示; 需要显示时,z-index值设置成>0即可。

    bootstrap来控制z-index的大小。
控制模态窗口的显示与隐藏:

​ 1)方式一:通过标签的属性data-toggle=“modal” 开启模态窗口 toggle切换 美工喜欢用

​ data-target=“模态窗口的id” 确定那个div是模态窗口

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#createActivityModal"><span class="glyphicon glyphicon-plus"></span> 创建</button>

​ 2)方式二:通过js函数控制:程序员喜欢用的 ​ 选择器(选中div).modal(“show”);//显示选中的模态窗口 ​ 选择器(选中div).modal(“hide”);//关闭选中的模态窗口

	$(function(){ 
        
		$("#createActivityBtu").click(function () { 
        
			//这里可以编写js 进行一些初始化工作
			// jquery转dom对象 $("#createActivityFrom") 转为 from标签
			$("#createActivityFrom").get(0).reset();
			//弹出创建市场的窗口,
			$("#createActivityModal").modal("show");
		});
<!-- data-toggle="modal" data-target="#createActivityModal" 没有这两

标签: 7b0bs41变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台