struts2-剩余2

周一-周四   晚上:7:30 – 9:30

多线程、Linux、云服务器、git

spring

springboot、springcloud

今晚:7:30  测试直播网速

一、回顾

拦截器:在目标action方法执行的前后插入一段额外的逻辑代码;aop面向切面编程的一种实现

实现Interceptor接口,intercept()核心方法,每次调用目标方法时都会被执行

struts.xml配置:

         package:<interceptors>

         action:<interceptor-ref name/>

         package默认继承struts-defalut

i18n

二、log4j

以前我们的代码有bug,使用system.out.println()语句来输出打印

有时我们需要对我们自己的代码运行结果进行记录,可以使用log4j

log4j是Apache的一个开源项目,可以控制日志信息输出的位置(控制台,文件,数据库)

日志七个级别

  由低到高分别是:OFF ,DEBUG,INFO,WARN,ERROR,FETAL,ALL

官方建议使用红色

使用,

  添加log4j的jar包,然后再src目录配置log4j.properties

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
# 设置 日志级别和appender
log4j.rootLogger = info,stdout,logFile
 
# 输出信息到控制抬 
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
 
# 输出dubug级别以上的日志到文件
log4j.appender.logFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.logFile.File = E://logs/log.log
log4j.appender.logFile.Append = true
log4j.appender.logFile.Threshold = DEBUG 
log4j.appender.logFile.layout = org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
public class Demo1Action extends ActionSupport {
    
    private String name;
    //日志记录器
    private Logger log = Logger.getLogger(Demo1Action.class);
    
    @Override
    public String execute() throws Exception {
        
        log.debug("dubug......");
        log.info("info......");
        log.warn("warn......");
        log.error("error......");
        
        return SUCCESS;
    }
    
}

三、ajax访问action

(1)demo2.jsp

(2)Demo2Action

@Getter
@Setter
public class Demo2Action extends ActionSupport {

    private String uname;
    private String pname;
    //此方法通过前端ajax调用,所以不需要返回值,返回的数据通过response响应
    public void m1() throws IOException{
        System.out.println("姓名:"+uname+",密码:"+pname);
        //获取response响应对象
        HttpServletResponse response = ServletActionContext.getResponse();
        //设置类型和编码
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        if("admin".equals(uname) && "123456".equals(pname)){
            response.getWriter().write("1"); //成功
        }else{
            response.getWriter().write("0"); //失败
        }
    }
}

(3)struts.xml

<action name="demo2Action" class="com.yujun.maven.action.Demo2Action">
</action>

四、highcharts图表-折线图

(1)City

@Setter
@Getter
public class City {
    private String name; //城市名
    private double[] data; //12月份的温度数组
}

(2)Demo3Action

public class Demo3Action extends ActionSupport {

    public void m1() throws Exception {
        
        //模拟数据库,创建数据
        City cq = new City();
        cq.setName("重庆");
        cq.setData(new double[]{7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2,26.5, 23.3, 18.3, 13.9, 9.6});
        
        City lz = new City();
        lz.setName("兰州");
        lz.setData(new double[]{-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8,24.1, 20.1, 14.1, 8.6, 2.5});
        
        //集合
        List<City> list = new ArrayList<City>();
        list.add(cq);
        list.add(lz);
        
        //把集合转为json数据
        ObjectMapper map = new ObjectMapper();
        String json = map.writeValueAsString(list);
        
        //把json响应到前端
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write(json);
    }
}

(3)struts.xml

<action name="demo3Action" class="com.yujun.maven.action.Demo3Action">
</action>

(4)demo3.jsp

<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/highcharts.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
       var title = {
          text: '城市平均气温'   
       };
       var subtitle = {
          text: 'Source: runoob.com'
       };
       var xAxis = {
          categories: ['一', '二', '三', '四', '五', '六',
             '七', '八', '九', '十', '十一', '十二']
       };
       var yAxis = {
          title: {
             text: 'Temperature (xB0C)'
          },
          plotLines: [{
             value: 0,
              1,
             color: '#808080'
          }]
       };   

       var tooltip = {
          valueSuffix: 'xB0C'
       }

       var legend = {
          layout: 'vertical',
          align: 'right',
          verticalAlign: 'middle',
          borderWidth: 0
       };

       var series;
       
       //ajax请求后台action获取json数据
       $.ajax({
           async:false,
           dataType:'json',
           type:'get',
           url:'demo3Action!m1.action',
           success:function(data){
               series = data;
           }
       })    

       var json = {};

       json.title = title;
       json.subtitle = subtitle;
       json.xAxis = xAxis;
       json.yAxis = yAxis;
       json.tooltip = tooltip;
       json.legend = legend;
       json.series = series;

       $('#container').highcharts(json);
    });
</script>
</head>
<body>
    <div id="container" style=" 550px; height: 400px; margin: 0 auto"></div>
</body>
</html>

Jackson依赖

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

更多图表案例,请自行参照菜鸟教程

三件事:

         (1)19:30直播平台测试

         (2)单表使用struts2框架增删改查(可以没有分页和查询条件)

         (3)预习hibernate第一章

原文地址:https://www.cnblogs.com/faded8679/p/10764764.html