SSH和SSM项目用到的技术点

SSH

1.使用maven对项目的管理

     Maven的生命周期:

   clean(清理)--->compile(编译)--->test(测试)--->package(打包)--->集成测试--->验证--->部署

     Maven的依赖范围:

            用于指定maven在哪个生命周期范围内有效,我们平时开发项目,需要将jar导入classpath中

            maven为我们提供了三种classpath: 编译 测试  运行

           在scope标签中通过配置

          score有6种:

               1.compile:编译  测试   运行都有效

              2.provided:在编译和测试有效,运行无效

              3.runtime:在测试和运行有效,编译期间无效 如:jdbc的驱动类

              4.test:只在测试范围有效  如: junit单元测试

              5.system: 在编译和测试有效,但与本机系统关联,可移植性差

              6.import:导入的依赖范围,它只使用在dependencyManagement中,表示从其它pom中导入

2.使用SSH完成后端框架的整体搭建

            Model: 模型,存放实体类(对应数据库表中的实体类)

             Dao: 数据访问层,主要做数据库的交互工作,把数据库中的数据永久的保存在硬盘中.

         Service:管理具体的功能(做相应的业务逻辑处理),Action只负责管理,Service负责实施

          Action: 控制器,管理业务调度和管理跳转的.

                      从这里可以跳转到Service层,调用Service中的方法,可以对前端请求进行业务逻辑处理

         Struts:控制界面和Action之间的关系

       Hibernate: 连接数据库操作,用的的Hibernate完成增删改查

使用Hibernate注解,可以不用配置Hibernate.hbm.xml

@Entity
@Table(name = "manager")
@Id
@GeneratedValue(strategy = Generation.IDENTITY)  //主键自动递增
@Column(name = "mAccount")

四本一言:

dataSource.xml



   
   
   
   
   
   
   
   

sessionFactory.xml


	
		
		
	
	  
	   
		org.hibernate.dialect.MySQL5InnoDBDialect
	   
		update
	   
		
		true
		
		true
	  
	
		
		
		 
	

使用Spring注解进行依赖注入,不用配置beans.xml了

//在SpringIOC容器中指定一个Dao层的bean,如果value不指定默认该对象为id的类名,如果指定,id为value的值
@Repository(value = "userDao") 


@Autowired   //默认是byType
@Qualifier(value = "userDao") //配合上面的注解使用,byName
@Resource //javaEE提供的依赖注入的注解,1.6之后才可以使用

@Service(value = "userService")

@Controller(value = "userAction")
@Scope("prototype")  //action是多例模式,需要经action设置为原型模式


使用Struts2注解,不需要配置struts.xml

//如果我们只是给前端返回数据,并不进行页面的跳转,package就继承自json-default
@ParentPackage("json-default")
@nameSpace("/user")
@Action(value = "queryRoom", results = {
          @Result(name = "success",type = "json", params = {"root", "result"})})

3.管理员登录界面的国际化

(1)前端: 

        三大指令: page  include  taglib

         1)将html文件转化为jsp文件

<% page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

        2)导入jsp标签库

<%@ taglib prefix="s" uri = "/struts-tags"%>

       3)用 标签

 

       4)使用a标签

   
 

(2)Action.java

public class CCAction extends ActionSupport {

	@Override
	public String execute() throws Exception {

		return SUCCESS;
	}
}

(3)struts_loginAndRegister.xml



    
	   /loginAndRegisterForManager.jsp		
    

4.使用ajax进行前后端的数据交互

$.ajax({

   type: "post" , //请求方式

   url:  "请求的路径",

   data: "向服务器传输的数据" ,

  success: function(data){   //data: 接收服务器发送过来的数据
        var  code = data["code"];

       var msg = data["msg"];

      alert(code + ":" + msg );

     }

  });

5.使用秒滴云第三方短信验证码接口,实现员工忘记密码之后修改密码(根据用户名修改密码)

    步骤:

           1).部署好秒滴云第三方短信验证码接口       类名: IndustrySMS.

           2). 员工忘记密码,通过账户名修改密码

                  2.1将账户名保存在session中

                      session.setAttribute("maccount",maccount);

                 2.2获取随机验证码并保存在session中

                      String  verifyCode = IndustrySMS.getRandomNum(6);

                        session.setAttribute("verifyCode", verifyCode);

                     //  获取短信验证码   

                   IndustrySMS.execute(manager.getMphone( ),verifyCode);                    

         3)修改密码

              //获取保存在session中的maccount和verifyCode

              String maccount = (String)  session.getAttribute("maccount");

             String verifyCode = (String) session.getAttribute("verifyCode ");

         4)当前端输入的验证码跟获取到的验证码一致时,修改密码

 6.使用双ajax在添加顾客的时候上传图片

          1)将顾客信息保存在session中,以便在修改顾客头像时使用.

                       session.setAttribute("custom",custom);

           2)修改顾客头像

                 2.1获取前端传递过来的文件的种类

                        String fileType = file.getContentType().substring(0,5);

                  2.2得到要保存文件的相对路径

                         Strring path1 = session.getServletContext().getRealPath("/images");

                 2.3获取前端传递过来的文件名称

                          String path2 =  file.getOriginalFilename();

                  2.4将相对路径和文件名拼接

                           String path = path1 + path2;

                 2.5将文件复制到目标路径下(存入服务器) 

                            file.transferTo(new File(path));

                 2.6获取保存在session中的顾客信息

                          Custom custom = (Custom) session.getAttribute("custom");

                 2.7获取顾客账号

                          String caccount = custom.getCaccount();

                 2.8根据顾客账号修改顾客头像

                      map = managerService.updatecImg("images/"+path2,caccount);

7.受用SSM完成后端框架的整体搭建

              Entity: 模型,存放实体类(对应数据库表中的实体类)

             Dao: 数据访问层,主要做数据库的交互工作,把数据库中的数据永久的保存在硬盘中.

         Service:管理具体的功能(做相应的业务逻辑处理),Controller只负责管理,Service负责实施

          Controller: 控制器,管理业务调度和管理跳转的.

                      从这里可以跳转到Service层,调用Service中的方法,可以对前端请求进行业务逻辑处理

        Mybatis:   @MapperScan指定要扫描mapper类的包的路径

              基于注解的映射方式,实现对数据的增删改查,将sql语句写下注解的括号中

                         @Update   @Select

                         @Inser       @Delete



   
  	    	  			 			 		 			   			
    

8.使用Restful分风格开发整个项目

           Restful:符合REST约束风格和原则的应用程序或设计

             HTTP的请求动作一般分为四种:

                  1)GET: 获取资源

                  2)POST: 添加资源

                  3)PUT: 修改资源

                  4) DELETE: 删除资源

           前端的请求只能是GET或POST,所以需要将POST请求转化为PUT或者DELETE.

               通过HiddenHTTPMethodFilter进行转化.

           在前端发起请求时,添加一个参数 _method,将此参数的值指定为请求路径PUT/DELETE.

9.使用Mybatis一对多进行关联查询

            1)Entiry:  

                   在各自的实体中分别写和对方相关联的属性

            2)在方表中增加一个字段作为外键,此外键是和一方的主键关联 

           3)Mybatis一方的配置文件中resultMap中

                 

                多方的配置文件中的resultMap中

                    

10.在管理员登录的时候设置拦截器

通过拦截器获取客户机信息

(请求的URL地址, 请求的资源, 请求的URL地址中附带的参数,来访者的IP地址,来访者的主机名

   使用的端口号,请求使用的方法,获取WEB服务器的IP地址,获取WEB服务器的主机号)

public class LoginInterceptor implements HandlerInterceptor {
   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
       throws Exception {
     // TODO Auto-generated method stub
    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
  }

11.通过junit对各个功能进行测试

SSH:

public class MyTest {
  @org.junit.Test
  public void test() {
	ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
	 Manager manager = new Manager();
	 manager.setmAccount("zhoushuai");
	 manager.setmPassword("12345678");
	 manager.setmName("道玄真人");
	 manager.setmSex("男");
	 manager.setmAge(68);
	 manager.setmPhone("15022527037");
	 manager.setmEmail("[email protected]");
	 manager.setmAddress("青云门");
 ManagerAction action = context.getBean("managerAction",ManagerAction.class);
	action.setManager(manager);
	action.addManager();

SSM:

@Component
public class ServiceAndDaoTest {

  @Resource
  private ManagerServcieImpl service;

  @Test
  public void test() {
	ApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
      service = context.getBean(ManagerServcieImpl.class);
		 Custom custom = new Custom();
		 custom.setCaccount("dd123456");
		 custom.setCpassword("22222222");
		 custom.setCname("张三");
		 custom.setCage(20);
		 custom.setCphone("15022527037");
		 service.addCustom(custom);
}

视图:

       创建一张虚拟的表,本质上是对基表的一条select查询语句

作用:

简化复杂的查询语句   限制数据访问

例如:

create or replace view view_myemp_20 as select * from myemp where deptno = 20;

 

索引:
允许直接访问数据表中某一行记录的树形结构,主要作用是为了提高查询效率

索引一般是基于表中经常要查询的某一列来创建

create unique index 索引名 on 表名(字段名)

 

触发器(可以看成是监听器)

数据库中于表相关的存储的一段PL/SQL程序,主要作用是用于监听表中的DML操作.

例如: 

     创建一个触发器,每当向myemp中插入一个新员工时,控制台会自动打印'成功插入员工'

create or replace trigger trigger_savenewemp

after insert on myemp 

declare

begin

    dbms_output.put_line('成功插入员工')

end;

/

触发器的使用场景:

1.复杂的安全性检查

2.数据的确认

3.数据库的审计

4.数据库的备份和同步

 

存储过程:

数据库中的一组提前编译的PL/SQL语句程序语句集

其中可以对数据一些通用复杂操作进行封装,只需要编译一次,以后每次执行不需要重复编译

可以反复调用,减少工作量

创建存储过程:打印helloword

create or replace procedure sayHello

AS

begin

      dbms_output_line('helloworld')

end;

/

调用存储过程

begin  

    begin sayHello();

end;

/

 

 

 

 

 

  

 

              

 

 

 

 

 

 

 

 

 

 

 

 

           

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java常用知识点)