Java注解式开发

目录

 

1. ssm框架的搭建 

1.1 maven项目的创建

1.2 导入所需的包到pom.xml文件中

1.3 导入数据库连接文件、日志文件、redis连接文件

1.3.1 数据库连接文件

1.3.2 日志文件

1.3.3 redis连接文件

1.4 导入spring-mybatis、spring-mvc、spring-base、spring-redis四种集成文件

1.4.1 spring-mybatis集成文件

1.4.2 spring-mvc集成文件

1.4.3 spring-base集成文件

1.4.4 spring-redis集成文件

1.5 导入web.xml

1.6 导入所需的工具包(util)文件

·1.6.1 适用于支持java web应用跨资源源共享(CORS)的首个统一解决方案的文件

1.6.2 

1.6.3 处理请求编码问题文件

1.6.4 继承了感知器

1.7 运行结果

2. 获取注解的参数


1. ssm框架的搭建 


1.1 maven项目的创建


Java注解式开发_第1张图片

注:将jkd版本切换至1.8,web.xml的版本切换至3.1

1.2 导入所需的包到pom.xml文件中





    4.0.0

    com.nara
    ssmdemo
    1.0-SNAPSHOT
    war

    ssmdemo Maven Webapp
    
    http://www.example.com

    
        UTF-8
        1.8
        1.8
    

    
        
            junit
            junit
            4.12
            test
        

        
        
            org.springframework
            spring-context
            5.3.18
        

        
            org.springframework
            spring-tx
            5.3.18
        

        
            org.springframework
            spring-jdbc
            5.3.18
        

        
            org.springframework
            spring-test
            5.3.18
        

        
            org.springframework
            spring-web
            5.3.18
        

        
            org.springframework
            spring-webmvc
            5.3.18
        

        
            org.springframework
            spring-orm
            5.3.18
        

        
            org.springframework
            spring-aspects
            5.3.18
        

        
        
            org.mybatis
            mybatis
            3.5.6
        

        
            org.mybatis
            mybatis-spring
            2.0.6
        

        
            com.github.pagehelper
            pagehelper
            5.1.2
        

        
            mysql
            mysql-connector-java
            5.1.44
        

        
        
            org.apache.commons
            commons-dbcp2
            2.1.1
        
        
            org.apache.commons
            commons-pool2
            2.4.3
        

        
        
            org.slf4j
            slf4j-api
            1.7.36
        

        
            ch.qos.logback
            logback-classic
            1.2.10
        

        
        
            redis.clients
            jedis
            2.9.0
        

        
            org.springframework.data
            spring-data-redis
            1.7.2.RELEASE
        

        
            com.fasterxml.jackson.core
            jackson-core
            2.9.4
        

        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.4
        

        
        
            org.projectlombok
            lombok
            1.18.22
            provided
        

        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

    

    
        ssmdemo
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
            
        
    

1.3 导入数据库连接文件、日志文件、redis连接文件


1.3.1 数据库连接文件


jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tmpdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

注:tmpdb是数据库的名称 

1.3.2 日志文件





	
	
	
	

	
	
		
			
			%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
		
	

	
	
		
			
			${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.log
			
			30
		
		
			
			%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
		
		
		
			10MB
		
	

	
	
	
	
	

	
	
	
		
		
	

1.3.3 redis连接文件


redis.host=localhost
redis.port=6379
redis.maxTotal=10
redis.maxIdle=5
redis.testOnBorrow=true

1.4 导入spring-mybatis、spring-mvc、spring-base、spring-redis四种集成文件


1.4.1 spring-mybatis集成文件





    
    
    
        
        
        
        
        
        

        
            
                
                    
                        
                        
                            helperDialect=mysql
                        
                    
                
            
        

    

    
    
    
        
        
        
        
    

1.4.2 spring-mvc集成文件




    
    
    

    
    
        
        
        
    

    
	
    
    

    
    
        
        
        
        
    

    
    

    
    
        
            
                
            
        
    

    
    
        
        
            
                text/html;charset=UTF-8
                text/json;charset=UTF-8
                application/json;charset=UTF-8
            
        
    

1.4.3 spring-base集成文件





    
    
    
    
    

    
    

    
    
    

    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        
        

    


    
    
    

    
    
        
    

    
    

1.4.4 spring-redis集成文件





	

	
	

	
	
		
		
		
	

	
	
		
		
		
		
	

	
	
		

		
		
			
		
		
			
		
		
			
		
		
			
		
		
		
		
	

	
	

	
		
		
		
	

	

1.5 导入web.xml




    
    
    
        contextConfigLocation
        classpath*:spring-*.xml
    
    
    
        org.springframework.web.context.ContextLoaderListener
    

    
        encodingFilter
        com.zking.ssmdemo.util.EncodingFilter
    
    
        encodingFilter
        /*
    

    
        corsFilter
        com.zking.ssmdemo.util.CorsFilter
    
    
        corsFilter
        /*
    

    
    
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath*:spring-mvc.xml
        
        
        1
        
        true
    
    
        SpringMVC
        /
    

1.6 导入所需的工具包(util)文件


·1.6.1 适用于支持java web应用跨资源源共享(CORS)的首个统一解决方案的文件


package com.zking.ssmdemo.util;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 配置tomcat允许跨域访问
 * 
 * @author Administrator
 *
 */
public class CorsFilter implements Filter {

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
		HttpServletRequest req = (HttpServletRequest) servletRequest;
		// Access-Control-Allow-Origin就是我们需要设置的域名
		// Access-Control-Allow-Headers跨域允许包含的头。
		// Access-Control-Allow-Methods是允许的请求方式
		httpResponse.setHeader("Access-Control-Allow-Origin", "*");// *,任何域名
		httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
		httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,jwt");
		//允许客户端,处理一个新的响应头jwt
		httpResponse.setHeader("Access-Control-Expose-Headers", "jwt");
		
		// axios的ajax会发两次请求,第一次提交方式为:option,直接返回即可
		if ("OPTIONS".equals(req.getMethod())) {
			return;
		}
		
		filterChain.doFilter(servletRequest, servletResponse);
	}

	@Override
	public void destroy() {

	}
}

1.6.2 


package com.zking.ssmdemo.util;

import org.springframework.cache.interceptor.KeyGenerator;

import java.lang.reflect.Method;

public class CustomKeyGenerator implements KeyGenerator {
    @Override
    public Object generate(Object target, Method method, Object... params) {
        StringBuilder sb = new StringBuilder();
        sb.append(target.getClass().getName());
        sb.append(method.getName());
        for(Object param: params) {
            sb.append(param.toString());
        }
        return sb;
    }
}

1.6.3 处理请求编码问题文件


package com.zking.ssmdemo.util;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 中文乱码处理
 * 
 */
public class EncodingFilter implements Filter {

	private String encoding = "UTF-8";// 默认字符集

	public EncodingFilter() {
		super();
	}

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;

		// 中文处理必须放到 chain.doFilter(request, response)方法前面
		res.setContentType("text/html;charset=" + this.encoding);
		if (req.getMethod().equalsIgnoreCase("post")) {
			req.setCharacterEncoding(this.encoding);
		}

		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		String s = filterConfig.getInitParameter("encoding");// 读取web.xml文件中配置的字符集
		if (null != s && !s.trim().equals("")) {
			this.encoding = s.trim();
		}
	}

}

1.6.4 继承了感知器


package com.zking.ssmdemo.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @author L
 * @site www.xiaomage.com
 * @company xxx公司
 * @create  2022-11-09 15:40
 */
@Component
public class SpringUtils implements ApplicationContextAware {

    private static ApplicationContext ctx;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ctx = applicationContext;
    }

    public static  T getBean(String id) {
        return (T)ctx.getBean(id);
    }
}

1.7 运行结果


自定义的注解也有(Mylog AOP。。。)

2. 获取注解的参数


Java注解式开发_第2张图片

 value,name两个自定义参数

Java注解式开发_第3张图片

你可能感兴趣的:(java,开发语言,spring,ssm)